WKInterfaceSwitch switchAction(值:Bool)值始终为false Apple Watch

时间:2015-05-28 18:47:51

标签: ios watchkit

我目前正在开发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
}

1 个答案:

答案 0 :(得分:1)

我有完全相同的问题!

也许有兴趣:我看到这种情况只发生在一块手表上,与iPhone 5s配对。

我没有看到与iPhone 6搭配的不同Watch的相同问题。该问题也未在模拟器上显示。

这两款手表都有1.01版,两款手机都有iOS 8.3

我找不到直接修复,因为它看起来像WatchKit中的某种错误。但是,解决方法非常简单。

我设置了一个布尔成员变量,以记录初始开关状态。然后,当回调进入时,我反转成员变量的状态,并使用它而不是WatchKit传递的值(我现在忽略它!)。

我希望这有帮助!如果您发现更多,或者碰巧发现这是由Apple修复的,请在此处分享这些信息!

注意:我已将此作为Apple的错误提交,如雷达21171938

皮特