【问题标题】:How to fix missing interface controller inside Page Controller in Apple Watch?如何修复 Apple Watch 页面控制器中缺少的界面控制器?
【发布时间】:2019-10-28 17:43:28
【问题描述】:

我发现了什么?

尝试在根页面控制器内的界面控制器之间水平滚动。

  1. 一段时间后(30-1 分钟)随机。

  2. 您会发现其中一个接口控制器丢失了。

  3. 显示空白视图,UI 完全消失。 (没有界面的黑色视图)。

  4. 尝试在XCode中打开视图调试器,你会发现页面视图控制器层次结构中缺少视图的界面窗口。

重现

  • 创建一个新的应用程序。

  • 创建一个新的 Watch 应用程序

  • 向故事板添加了 2 个额外的界面控制器

  • 为两者添加标识符

  • 在初始接口控制器调用内部

WKInterfaceController.reloadRootPageControllers(withNames: ["View1","View2"], contexts: ["View1","View2"], orientation: .horizontal, pageIndex: 1)

  • 在 Watch OS 6 Series 3(模拟器或 A 设备)上运行应用程序
  • 尝试随机滚动

我希望页面控制器能够保持界面控制器应有的状态,并且在用户滚动时不应显示空白黑屏。

【问题讨论】:

  • 恐怕没有解决方案,但我在最近对我的 Watch 应用程序的更改中也看到了这一点。仅在我添加了第三个视图控制器并切换到 SwiftUI 之后发生 - 不知道它们是否相关
  • 不科学地自从昨天升级到 WatchOS 6.1 后我就没见过它,所以希望修复????
  • 感谢您的评论,我确实确认它与 WatchOS 5 完美配合 问题显然是 WatchOS 6 中的一个错误。现在正在更新 WatchOS 6.1。
  • 我更新到 WatchOS 6.1 并解决了这个问题,还注意到同样的问题可以很容易地在苹果自己的文档示例中重现。
  • 我仍然在使用 watchOS 6.1 时体验到这一点

标签: ios watchos wkinterfacecontroller watchos-6


【解决方案1】:

我遇到了同样的问题,这是由于调用 crownSequencer.focus() 而没有相应的 crownSequencer.resignFocus() 调用。在我的情况下,我在didAppear() 中调用focus(),一旦我向willDisappear() 添加了resignFocus() 调用,问题就消失了。

这里有类似的问题: Black screen page on apple watch apps with more that one page

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    相关资源
    最近更新 更多