0

我有一个 watchkit 应用程序,它通过设置使用数字表冠

crownSequencer.delegate = self
crownSequencer.focus()

在我正在实现的接口控制器的唤醒方法中:

class InterfaceController: WKInterfaceController, WKCrownDelegate 

在 watchOS 3 中,我的委托方法执行得很好:

// called when the crown rotates, rotationalDelta is the change since the last call (sign indicates direction).
func crownDidRotate(_ crownSequencer: WKCrownSequencer?, rotationalDelta: Double) {

    // do something important here...
}

升级到 watchos4 后,此功能中断。一个简单的重新编译和转换为 swift 4 并没有帮助。

4

1 回答 1

2

我可以通过简单地将 CrownSequencer 代码移动到我的界面控制器的 willActivate 方法来解决这个问题:

override func willActivate() {
    ...

    crownSequencer.delegate = self
    crownSequencer.focus()
}

在我看来,如果您过早地设置焦点,那么 watchOS 4 中的某些东西会窃取焦点(可能与我正在使用的 spritekit 有关?)。

希望这可以为其他人节省一些时间!

于 2017-09-24T10:10:21.320 回答