我目前正在开发Apple Watch App。
我使用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
}

最佳答案

我也有完全一样的问题!

也许有意思:我看到这种情况只发生在一只搭配iPhone 5s的手表上。

使用其他手表与iPhone 6配对时,我没有看到相同的问题。模拟器上也未显示该问题。

两款手表的版本均为1.01,两款手机的版本均为iOS 8.3

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

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

我希望这有帮助!如果您发现更多信息,或者碰巧发现这是Apple解决的问题,请在此处共享该信息!

注意:我已经将它作为与Apple一起的bug提交给雷达21171938

皮特

关于ios - WKInterfaceSwitch switchAction(value:Bool)值始终为false Apple Watch,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30514783/

10-13 07:54
查看更多