我在聊天视图中的应用程序中实现了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时,我重现了这个问题.