如果轻轻触摸,Force Touch 动画就会冻结
Posted
技术标签:
【中文标题】如果轻轻触摸,Force Touch 动画就会冻结【英文标题】:Force Touch animation freezes if gently touched 【发布时间】:2015-11-06 01:11:27 【问题描述】:我已经在我的应用程序的聊天视图中实现了 Force Touch。当用户强制触摸其他用户的聊天消息气泡时,会显示他/她的个人资料。出于某种奇怪的原因,当轻轻按下消息气泡时,交互过渡卡住了,可见的只是应该逐步淘汰的视图的屏幕截图。
我也使用 View Hierarchy Debugger 调试了这个问题,UITransitionView
绝对是最顶层的视图。该应用程序不会崩溃 - 它仍在运行,用户仍然可以接收消息但不能查看它们,退出屏幕等,因为屏幕截图卡在顶部。
有人遇到过这样的问题吗?听起来像苹果的错误。
【问题讨论】:
也许你可以分享一些代码。你在使用 Apple 的 peek/pop API 吗? 你好@beyowulf。我将尝试使用示例项目复制该问题并将其发布在此处。是的,我正在使用 peek/pop API。 请在我的 Github 上查看示例项目:github.com/JinkProject/PeekPopBug 你找到解决办法了吗? @KlevisonMatias 不幸的是我没有。我已经在 Apple Developer 论坛中遇到并重新发布了这个问题,但成员和 Apple 工程师都没有回复或提出可行的解决方案。 【参考方案1】:我找到了这个错误的原因。
如果您的视图控制器需要支持强制触摸预览,您需要通过调用将此视图控制器注册到委托
- (id <UIViewControllerPreviewing>)registerForPreviewingWithDelegate:(id<UIViewControllerPreviewingDelegate>)delegate
sourceView:(UIView *)sourceView NS_AVAILABLE_ios(9_0);
执行此操作的方法。
我只是突然调用这个函数两次(一次在超类中'viewDidLoad()
,一次在子视图控制器中),当我在我的子视图控制器中删除一次时,此错误已修复!太棒了……
这仍然是 Apple 的错误,因为发生这种情况没有任何意义。但是,希望这个答案可以帮助和我有同样问题的开发者。
仅供参考。我只是浏览了你的 Github 代码,没有发现注册方法的双重调用。这个错误可能还有其他原因。您可以尝试在UITableViewController
的子类中删除注册方法。顺便说一句,当视图控制器使用 ComponentKit 时,我会重现此问题。
【讨论】:
以上是关于如果轻轻触摸,Force Touch 动画就会冻结的主要内容,如果未能解决你的问题,请参考以下文章
Sencha Touch App 在多点触控/Android 时冻结