我目前正在开发Apple Watch应用程序。 我使用WKInterfaceSwitch来切换某些东西的状态。
在我的WKIntefaceController中,我连接了切换开关时调用的动作。
@IBAction func switchAction(value: Bool) {
NSLog("\(value)")
}
当我在模拟器中运行项目时,控制台输出显然是:
2015-05-28 20:42:08.067 Watch Test WatchKit Extension[1503:28272] false
2015-05-28 20:42:08.896 Watch Test WatchKit Extension[1503:28272] true
2015-05-28 20:42:10.547 Watch Test WatchKit Extension[1503:28272] false
2015-05-28 20:42:11.558 Watch Test WatchKit Extension[1503:28272] true
当我在物理监视上运行项目时,控制台将显示以下内容:
2015-05-28 20:44:06.044 Watch Test WatchKit Extension[345:16118] false
2015-05-28 20:44:06.954 Watch Test WatchKit Extension[345:16118] false
2015-05-28 20:44:07.318 Watch Test WatchKit Extension[345:16118] false
2015-05-28 20:44:08.343 Watch Test WatchKit Extension[345:16118] false
有谁知道为什么会这样。
可以在此处下载显示问题的完整项目:
https://bitbucket.org/rcpfuchs/watch-kit-wkinterfaceswitch-issue
这似乎仅在某些设备上发生,因此如果您正在开发Apple Watch应用程序,请按以下方式更好地跟踪状态:
var switchValue = false // the value you chose in storyboard
@IBAction func switchAction(value: Bool) {
// ignore value
switchValue = !switchValue
// do something with switchValue
}
答案 0 :(得分:1)
我有完全相同的问题!
也许有兴趣:我看到这种情况只发生在一块手表上,与iPhone 5s配对。
我没有看到与iPhone 6搭配的不同Watch的相同问题。该问题也未在模拟器上显示。
这两款手表都有1.01版,两款手机都有iOS 8.3
我找不到直接修复,因为它看起来像WatchKit中的某种错误。但是,解决方法非常简单。
我设置了一个布尔成员变量,以记录初始开关状态。然后,当回调进入时,我反转成员变量的状态,并使用它而不是WatchKit传递的值(我现在忽略它!)。
我希望这有帮助!如果您发现更多,或者碰巧发现这是由Apple修复的,请在此处分享这些信息!
注意:我已将此作为Apple的错误提交,如雷达21171938
皮特