在我的Watch Extension的一个接口控制器中,我有几个WKInterfacePicker
元素,我需要知道用户何时选择了一个值。根据documentation,WKInterfaceController
应该能够实现以相应的选择器元素作为参数的pickerDidSettle(_:)
方法。由于某种原因,当我使用选择器时,永远不会调用该方法。这是我实现的基本结构:
override func pickerDidSettle(picker: WKInterfacePicker) {
// Code inside this block is not called
}
如果我使用@IBAction
属性标记该函数并将其与接口构建器中的选择器元素相连,则实例方法将起作用。但是,这显然阻止了我分配选择器操作来接收用户正在滚动的所有选择器值。
@IBAction
override func pickerDidSettle(picker: WKInterfacePicker) {
// This function gets called, but blocks other actions
}
我的接口控制器继承自WKInterfaceController并遵循两个自定义协议。我应该如何实现该方法?
编辑:该问题与WatchKit中的可能错误有关,在该错误中,没有与控制器的现有@IBAction连接,将不会调用pickerDidSettle(_:)
。我认为这是一个错误,因为相关实例方法pickerDidFocus(_:)
和pickerDidResignFocus(_:)
的工作独立于连接。
有时,当Xcode和Simulator之间的某些内容“不同步”时,会发生此问题。
只需关闭模拟器,然后清洁并重建您的应用程序(通过“产品/清洁构建文件夹”来重新创建“同步”。