如何修复 Apple Watch 页面控制器中缺少的界面控制器?
Posted
技术标签:
【中文标题】如何修复 Apple Watch 页面控制器中缺少的界面控制器?【英文标题】:How to fix missing interface controller inside Page Controller in Apple Watch? 【发布时间】:2019-10-28 17:43:28 【问题描述】:我发现了什么?
尝试在根页面控制器内的界面控制器之间水平滚动。
一段时间后(30-1 分钟)随机。
您会发现其中一个接口控制器丢失了。
显示空白视图,UI 完全消失。 (没有界面的黑色视图)。
尝试在XCode中打开视图调试器,你会发现页面视图控制器层次结构中缺少视图的界面窗口。
重现
创建一个新的应用程序。
创建一个新的 Watch 应用程序
向故事板添加了 2 个额外的界面控制器
为两者添加标识符
在初始接口控制器调用内部
WKInterfaceController.reloadRootPageControllers(withNames: ["View1","View2"], contexts: ["View1","View2"], orientation: .horizontal, pageIndex: 1)
我希望页面控制器能够保持界面控制器应有的状态,并且在用户滚动时不应显示空白黑屏。
【问题讨论】:
恐怕没有解决方案,但我在最近对我的 Watch 应用程序的更改中也看到了这一点。仅在我添加了第三个视图控制器并切换到 SwiftUI 之后发生 - 不知道它们是否相关 不科学地自从昨天升级到 WatchOS 6.1 后我就没见过它,所以希望修复???? 感谢您的评论,我确实确认它与 WatchOS 5 完美配合 问题显然是 WatchOS 6 中的一个错误。现在正在更新 WatchOS 6.1。 我更新到 WatchOS 6.1 并解决了这个问题,还注意到同样的问题可以很容易地在苹果自己的文档示例中重现。 我仍然在使用 watchOS 6.1 时体验到这一点 【参考方案1】:我遇到了同样的问题,这是由于调用 crownSequencer.focus()
而没有相应的 crownSequencer.resignFocus()
调用。在我的情况下,我在didAppear()
中调用focus()
,一旦我向willDisappear()
添加了resignFocus()
调用,问题就消失了。
这里有类似的问题: Black screen page on apple watch apps with more that one page
【讨论】:
以上是关于如何修复 Apple Watch 页面控制器中缺少的界面控制器?的主要内容,如果未能解决你的问题,请参考以下文章
Assets.xcassets 中缺少 Apple Watch AppIcon for Long-Look 通知
关闭辅助视图控制器后,如何继续从 Apple Watch 接收消息/数据