我一直在做一些关于制作 Apple Watch 应用程序的研究,但我在获取 Digital Crown 的价值方面遇到了一些麻烦。我查看了 WKCrownSequencer,但不确定如何处理它。有人可以告诉我我将如何获得一个值 1-10 的变量,当您转动 Digital Crown 时,该变量会发生变化。谢谢!
您需要使您的InterfaceController子类符合WKCrownDelegate并实现该crownDidRotate方法。
如果你希望你的值在 1 到 10 之间,你只需要实现一些简单的逻辑来检查添加时的值是什么,rotationalDelta如果它超出了 1-10 的范围,则将值映射到 1 或10,取决于新值将超出的方向。我假设你想要valuebe ,如果不想,只需删除to和will beInt的转换。rotationalDeltaIntvalueDouble
请记住,rotationalDelta1.0 的 a 表示表冠的完整旋转,并rotationalDelta根据旋转方向更改其符号。
class MyInterfaceController: WKInterfaceController, WKCrownDelegate {
var value = 1
@IBOutlet var label: WKInterfaceLabel!
override func awake(withContext context: Any?) {
super.awake(withContext: context)
crownSequencer.delegate = self
}
func crownDidRotate(_ crownSequencer: WKCrownSequencer?, rotationalDelta: Double) {
let newValue = value + Int(rotationalDelta)
if newValue < 1 {
value = 1
} else if newValue > 10 {
value = 10
} else {
value = newValue
}
label.setText("Current value: \(value)")
}
}
Run Code Online (Sandbox Code Playgroud)