在WatchKit的所有测试版中,我都能够无缝运行我的手表应用程序,但在最近的发布版(8.2)中,我的willActivate方法几乎从未被调用。发生的情况是awakeWithContext被调用并且手表停滞不前,旋转图标会一直转动。这个问题有人遇到过吗?
我发现通过键入 Command-L 锁定和解锁设备(模拟器)会导致 willActivate 方法被调用。希望您不必在真正的 Apple Watch 上这样做。
我昨天遇到了同样的问题。
在我的情况下,我正在使用页面导航,并且初始视图控制器的 awakeWithContext
被调用,但是 willActivate
从未被调用。
经过一些调查,我发现当使用页面导航时,所有页面的 awakeWithContext
方法都会在启动时和初始页面的 willActivate
之前被调用。如果其中一个页面的 awakeWithContext
方法被卡住,初始页面的 willActivate
方法将永远不会被调用。
您可能需要检查其他视图控制器的 awakeWithContext
方法,以查看它们是否被卡住。
所以,我仍然不确定到底发生了什么或是导致这个问题的原因,但我遇到了完全相同的问题,并且进行了一些调查并得出了一些结果,希望这能帮助我们缩小范围。我已经确定它与我的初始控制器中放入的布局复杂度有关。如果我将我的初始控制器更改为一个更简单的布局,或者从我的初始控制器中删除“足够多”的内容,那么我就不再会遇到这个问题了。(当然,这也会破坏我的应用程序逻辑)。我的布局有点复杂,但并不是非常复杂;有四层嵌套的组,总共约20个UI元素(包括组本身),四个按钮和四个标签。在测试版中似乎工作得很好。而且没有明显的规律;某些布局组合会导致它,而某些则不会。它是确定性的;如果给定的布局在加载时旋转,它将始终在加载时旋转,如果不旋转,则不旋转。当它旋转时,我永远不会得到willActivate。当它不旋转时,我会得到。它似乎与awakeFromContext:的内容无关。我可以从该方法中删除所有内容,但这并没有帮助。它也与资源、编译器设置等等无关。除此之外,我还没有找到解决方法。如果有人对此有任何见解,我会很乐意听取。
awakeWithContext
做什么?能否贴出你的代码? - cnoon