iosswiftwatchkitwatchos-2wkinterfacecontroller

Selector not called on selecting menu item after force touch


I have this code, for responding to a menu item being tapped after a force touch:

class InterfaceController: WKInterfaceController {
    override init() {
        super.init()

        self.addMenuItemWithItemIcon(WKMenuItemIcon.Pause, title: "Pause", action: Selector("test"))
    }

    func test() {
        print("test")
    }
}

When I force touch, the menu appears. When I tap the "Pause" button, test() is not called.

Any ideas why this might be?


Solution

  • Solved.

    Though its the result of a silly mistake (aren't most problems?), I think this is something a lot of people will run into, so I'll keep it here with my answer.

    I enabled force touch on the simulator, so I could show the menu. When I'm tapping again on the button, force touch is still enabled, so I'm force touching, thus dismissing the menu.

    Solution: Disable force touch before tapping a menu button.