获取 WatchOS 数字皇冠价值

Pie*_*per 5 swift watchkit

我一直在做一些关于制作 Apple Watch 应用程序的研究,但我在获取 Digital Crown 的价值方面遇到了一些麻烦。我查看了 WKCrownSequencer,但不确定如何处理它。有人可以告诉我我将如何获得一个值 1-10 的变量,当您转动 Digital Crown 时,该变量会发生变化。谢谢!

Dáv*_*tor 5

您需要使您的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)