ios – 如果轻轻触摸,Force Touch动画会冻结

我在聊天视图中的应用程序中实现了Force Touch.当用户强制触摸另一用户的聊天消息泡泡时,呈现他/她的简档.出于某种奇怪的原因,当轻轻按下消息气泡时,交互式转换会卡住,所有可见的是应该逐步淘汰的视图的屏幕截图.

我也使用View Hierarchy Debugger调试了这个问题,而UITransitionView绝对是最顶层的视图.该应用程序不会崩溃 – 它仍然在运行,用户仍然可以接收消息,但不能查看它们,退出屏幕等等,因为屏幕截图位于顶部.

有没有人遇到过这样的问题?听起来像是一个苹果虫.

解决方法

我发现了这个错误的原因.

如果视图控制器需要支持强制触摸预览,则需要通过调用将该视图控制器注册到委托

- (id <UIViewControllerPreviewing>)registerForPreviewingWithDelegate:(id<UIViewControllerPreviewingDelegate>)delegate 
    sourceView:(UIView *)sourceView NS_AVAILABLE_IOS(9_0);

这样做的方法.

我只是突然调用了这个函数两次(一次在超类’viewDidLoad()中,一次在子视图控制器中),当我在子视图控制器中删除一次时,这个bug就修复了!惊人…

它仍然是一个Apple bug,因为它没有发生这种情况.但是,希望这个答案可以帮助那些与我有同样问题的开发人员.

仅供参考.我只是浏览你的Github代码,发现没有注册方法的双重调用.也许还有其他原因导致这个错误.您可以尝试在UITableViewController的子类中删除register方法.顺便说一下,当视图控制器使用ComponentKit时,我重现了这个问题.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...