WKCrownDelegate 似乎没有与 Xcode 9 GM 合作
WKCrownDelegate doesn't seem to be working with Xcode 9 GM
我尝试了下面针对 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)")
}
}
我也有过同样的经历。作为 hack,我在 willActivate() 中添加了对 crownSequencer.focus() 的另一个调用,现在我看到了事件。 (xcode 9.0 克,ios 11.0 克,watchos 4.0 克)
在 willActivate() 中添加 crownSequencer.focus() 对 Xcode10 没有帮助。
您不必在 awake() 或 willActivate()[ 中调用 crownSequencer.focus() =20=] 但在 didAppear() 中。所以你需要添加以下几行:
override func didAppear() {
super.didAppear()
crownSequencer.focus()
}
我尝试了下面针对 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)")
}
}
我也有过同样的经历。作为 hack,我在 willActivate() 中添加了对 crownSequencer.focus() 的另一个调用,现在我看到了事件。 (xcode 9.0 克,ios 11.0 克,watchos 4.0 克)
在 willActivate() 中添加 crownSequencer.focus() 对 Xcode10 没有帮助。 您不必在 awake() 或 willActivate()[ 中调用 crownSequencer.focus() =20=] 但在 didAppear() 中。所以你需要添加以下几行:
override func didAppear() {
super.didAppear()
crownSequencer.focus()
}