WKInterfaceController 中的左边缘滑动会挂起 Apple Watch 中的 UI

Posted

技术标签:

【中文标题】WKInterfaceController 中的左边缘滑动会挂起 Apple Watch 中的 UI【英文标题】:left-edge swipe in WKInterfaceController is hangs the UI in Apple watch 【发布时间】:2015-07-10 14:26:32 【问题描述】:

我在WKInterfaceController 中遇到了与左边缘滑动相关的严重问题。

当我从根接口控制器向WKInterfaceController 进行两次左边缘滑动时,我的应用程序会挂起 UI。

例如,我有 A、B、C 三个 WKInterfaceController,当我从 A 界面控制器向左滑动两次之后,我点击一个按钮将我的界面控制器从 A 推到 B。所以我的 B 界面控制器永远不会出现在屏幕上。我检查了 willActivate 是否在 B 上被调用,但 A 的 didDeactivate 方法从未被调用。

一旦我进入后台然后回到前台,我就可以看到 B 接口控制器。

我正在使用以下代码将我的控制器从 A 推送到 B:

[self pushControllerWithName:@"B" context:nil];

之后我尝试segue 做同样的事情。但segue 也会发生这种情况。

如果有人有同样的问题或知道相关的解决方案或建议,请告诉我。谢谢

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。 我在这里写了一个非常简单的演示https://github.com/ddrdjboy/AppleWatchLeftSwipeIssueDemo

步骤:

    点击应用图标并启动应用(回到前台)。 点击“Hello World~”表格行,它将推送到详细信息屏幕。 单击返回按钮或向左滑动。 (有时你可以忽略这一步,没关系。) 点击数字表冠进入apple watch主界面。

重复步骤 1-4 超过 30 次(根据我的经验)它将随机发生。

当错误发生时: 点击“Hello World~”表格行,没有效果。 单击左上角的返回按钮无效。 只有左边缘滑动可以挽救。当我向左滑动时,第一个屏幕会从右到左动画,第二个屏幕会进来。非常非常奇怪。

我提出了一个错误并等待 Apple 的回应。

【讨论】:

以上是关于WKInterfaceController 中的左边缘滑动会挂起 Apple Watch 中的 UI的主要内容,如果未能解决你的问题,请参考以下文章

WKInterfaceController,如何以编程方式设置“间距”和“插图”

如何解除使用 contextForSegue 呈现的 WKInterfaceController?

防止关闭模式 WKInterfaceController

可以在 SwiftUI Watch 项目中实例化 WKInterfaceController 吗?

我们如何为 WKInterfaceController 移植 addGestureRecognizer(recognizer)

WKInterfaceLabel 未在 WKInterfaceController 中更新 - Swift Apple watch dev