我想用苹果表冠来控制滑块.这可能吗?
如果是这样,怎么样?
Apple使用它来改变手表用户界面的颜色.
编辑:所以目前似乎不可能(见下面的答案).重要的是要注意在两周时间内(Apple WWDC 2015)这可能会改变(可能是独立应用程序的Watch OS?)
ras*_*spi 22
从watchOS 2 beta开始,您可以使用带WKInterfacePicker的数字表冠!
为了将数字表冠与WKInterfaceSlider结合使用,您需要做一些解决方法:
生成一个包含滑块步数的数组,例如:
items = [WKPickerItem](count: numberOfSteps, repeatedValue: WKPickerItem()) picker.setItems(items)
呼叫picker.focus()以接收数字皇冠输入
向您的选择器添加一个设置滑块值的操作,例如:
@IBAction func pickerChanged(value: Int) {
slider.setValue(Float(value + 1))
}所有答案都已过时。
Apple在watchOS 3中引入了WKCrownSequencer该类,该类允许跟踪用户与数字表冠的交互。您应实施,WKCrownDelegate以获悉有关旋转变化的信息,然后将旋转角度映射到值的变化。这是一个如何WKInterfaceSlider在表冠的帮助下控制a的示例:
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
}
}
Run Code Online (Sandbox Code Playgroud)
不可能。您没有控制 \xe2\x80\x93 的表冠,它仅自动用于滚动等。
\n\n苹果指南:
\n\n“滚动是应用程序唯一支持的 Digital Crown 交互,系统会自动为您管理这些交互。应用程序无法直接访问 Digital Crown。”
\n\nhttps://developer.apple.com/watch/ human-interface-guidelines/
\n\n当 Apple Watch 原生应用程序推出时,苹果可能会启用数字表冠(我们将在 2 周后的 WWDC 上看到)。
\n| 归档时间: |
|
| 查看次数: |
1900 次 |
| 最近记录: |