使用表冠来控制WKInterfaceSlider

时间:2015-05-28 10:54:56

标签: ios watchkit

我想用苹果表冠来控制滑块。这可能吗?

若然,怎么样?

Apple使用它来改变手表用户界面的颜色。

编辑:所以目前似乎不可能(见下面的答案)。重要的是要注意在两周时间内(Apple WWDC 2015)这可能会改变(可能是独立应用程序的Watch OS?)

5 个答案:

答案 0 :(得分:22)

自watchOS 2测试版以来,您可以使用带有WKInterfacePicker的数字表冠!

为了将数字表冠与WKInterfaceSlider结合使用,您需要做一些解决方法:

  • 将WKInterfacePicker添加到您的Interface Controller并将其高度设置为0以便将其隐藏起来(如果您将'hidden'设置为true则无法访问它)
  • 生成一个包含滑块步数的数组,例如:

    items = [WKPickerItem](count: numberOfSteps, repeatedValue: WKPickerItem())
    picker.setItems(items)
  • 致电picker.focus()以接收数字皇冠输入

  • 向您的选择器添加一个设置滑块值的操作,例如:

    @IBAction func pickerChanged(value: Int) {
        slider.setValue(Float(value + 1))
    }

答案 1 :(得分:4)

所有答案都已过时。

在watchOS 3中,Apple推出了WKCrownSequencer类,可以跟踪用户与数字皇冠的互动。您应该实现WKCrownDelegate以通知旋转变化,然后将旋转角度映射到值的变化。以下是如何在王冠的帮助下控制WKInterfaceSlider的示例:

class SliderInterfaceController: WKInterfaceController {
    @IBOutlet var slider: WKInterfaceSlider!

    let minVal: Float = 0
    let maxVal: Float = 10

    var selectedVal: Float = 0

    override func awake(withContext context: Any?) {
        super.awake(withContext: context)

        // The sequencer should be focused to receive events
        crownSequencer.focus()
        crownSequencer.delegate = self
    }

    @IBAction func sliderAction(_ value: Float) {
        selectedVal = value
    }
}

// MARK: WKCrownDelegate
extension SliderInterfaceController: WKCrownDelegate {
    func crownDidRotate(_ crownSequencer: WKCrownSequencer?, rotationalDelta: Double) {
        // 1 divided by number of rotations required to change the value from min to max 
        let rotationToValRatio = 0.25 * Double(maxVal - minVal)

        let newVal = selectedVal + rotationalDelta * rotationToValRatio

        let trimmedNewVal = max(minVal, min(newVal, maxVal))

        slider.setValue(Float(trimmedNewVal))
        selectedVal = trimmedNewVal
    }
}

答案 2 :(得分:2)

不可能。你没有掌控 - 它只能自动用于滚动等。

Apple指南:

“滚动是应用程序唯一支持的数字皇冠互动,系统会自动为您管理这些互动。应用程序无法直接访问数字皇冠。”

https://developer.apple.com/watch/human-interface-guidelines/

Apple Watch可能会在Apple Watch本机应用程序出现时启用数字游戏(我们将在WWDC的2周内看到)。

答案 3 :(得分:0)

就像ps4所说,这根本不可能。

正如Apple在Watch设计指南中所述:

"滚动是应用程序唯一受支持的Digital Crown交互,系统会自动为您管理这些交互。应用无法直接访问Digital Crown。"

https://developer.apple.com/watch/human-interface-guidelines/

答案 4 :(得分:0)

目前,这是不可能的。

然而,正如5月27日宣布的那样,Apple将在6月份的WWDC上为原生手表应用推出SDK。这样可以访问数字表冠。

来源:http://9to5mac.com/2015/05/27/live-blog-apple-senior-vp-of-operations-jeff-williams-interview-at-code-conference/