我对 Apple Watch 引入的新用户交互可能到非常兴奋,其中包括 Force Touch 和 Digital Crown。
但是,我在 WatchKit API 中找不到它们的提及。有没有办法从 Force Touch / Digital Crown 接收事件?是否有可能为事件定制处理程序?
watchOS 3 添加了WKCrownSequencer
和WKCrownDelegate
以报告数字表冠的状态(例如转速),以及在用户旋转表冠时接收通知。
您可以使用皇冠音序器提供一般输入来控制场景或界面对象。
Apple 已更新其WatchKit Catalog sample code,以包含一个 WKInteceController 表冠音序器示例,演示如何使用 Apple Watch 数字表冠与其他对象进行交互:
cl CrownDetailController: WKInteceController, WKCrownDelegate {
@IBOutlet var velocityLabel: WKInteceLabel!
@IBOutlet var stateLabel: WKInteceLabel!
@IBOutlet var pickerView: WKIntecePicker!
override func awake(withContext context: AnyObject?) {
super.awake(withContext: context)
let itemList: [(String, String)] = [
("Item 1", "Red"),
("Item 2", "Green"),
("Item 3", "Blue")
]
let pickerItems: [WKPickerItem] = itemList.map {
let pickerItem = WKPickerItem()
pickerItem.caption = $0.0
pickerItem.le = $0.1
return pickerItem
}
pickerView.setItems(pickerItems)
crownSequencer.delegate = self
}
override func willActivate() {
// This metd is called when watch view controller is about to be visible to user
super.willActivate()
crownSequencer.focus()
}
@IBAction func focusCrown(sender: AnyObject) {
crownSequencer.focus()
}
func updateCrownLabels() {
velocityLabel.setText(String(format: "RPS: %2.2lf", crownSequencer.rotationsPerSecond))
stateLabel.setText(crownSequencer.isIdle ? "Idle: true" : "Idle: false")
}
func crownDidBecomeIdle(_ crownSequencer: WKCrownSequencer?) {
updateCrownLabels()
}
func crownDidRotate(_ crownSequencer: WKCrownSequencer?, rotationalDelta: Double) {
updateCrownLabels()
}
}
目前(Xcode 6.2 beta 3)苹果已经表示,Digital Crown 将在第三方应用程序中上下滚动页面内容,但应用程序无法注册以接收来自它的通知或将其用作输入设备。这似乎很可能是由于担心延迟导致无响应或电池寿命,因为第三方代码仅在 iPne 上的 WatchKit App Extension 中运行,因此这些事件必须通过无线流发送回手机。
可以在第三方应用程序中使用 Force Touch 作为输入方法。在这一点上,我相信 Apple 建议在任何应用程序中使用 force touch 的唯一用途是显示上下文菜单,第三方开发人员对此具有完全访问权限。您无需注册即可接收强制触摸事件。您只需在界面构建器中创建一个菜单,向其中添加菜单项,然后将这些菜单项连接到您的 WatchKit Watch Extension 中的 IBActions 即可。
然而,苹果鼓励开发人员在http://bugreporter.apple.com提交增强请求,所以这样做是一个好主意,并要求访问这些 API,因为我们中的许多人已经拥有。
目前,这两种输入法都没有自定义事件处理程序的能力。开发者论坛上的苹果员工建议提交一个功能请求。我怀疑,一旦我们明年开始创建原生苹果手表应用程序,我们就可以访问数字皇冠 API。目前,它仍然是数据输入的一个重大限制。
在 watchOS 2 中,(包含在 Xcode 7 beta 中)Apple 添加了WKIntecePicker
以允许您注册委托并响应数字表冠更改。您可以签出文档here。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(46条)