WKCrownDelegate似乎不适用于Xcode 9 GM

Mat*_*t H 4 xcode watchos

我已经尝试了下面针对iOS 10.0 / Watch OS 3.0和iOS 11.0 / Watch OS 4.0的代码,并在模拟器和Watch OS 4设备中进行了测试。似乎没有任何东西可以触发crownDidRotate委托方法。

简单的接口,一个标签连接到插座。我知道它已连接,因为我更改了awake方法中的文本。当我旋转表冠时,不会中断委托方法。

有任何想法吗?

import Foundation
import WatchKit
class InterfaceController: WKInterfaceController, WKCrownDelegate {
    var value = 1
    @IBOutlet var label: WKInterfaceLabel!
    override func awake(withContext context: Any?) {
        super.awake(withContext: context)
        label.setText("Yeah?")
        crownSequencer.delegate = self
        crownSequencer.focus()
    }
    func crownDidRotate(_ crownSequencer: WKCrownSequencer?, rotationalDelta: Double) {
        label.setText("Rotational: \(rotationalDelta)")
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

我也有同样的经历。作为一种hack,我在willActivate()中添加了对CrownSequencer.focus()的另一个调用,现在正在看到事件。(xcode 9.0 gm,ios 11.0 gm,watchos 4.0 gm)