【问题标题】:App freeze on ios 8 when push or pop推送或弹出时,iOS 8 上的应用程序冻结
【发布时间】:2014-10-31 12:02:19
【问题描述】:

我的应用程序有一个大问题。主要是在 iOS 8 上,因为我们在其他 iOS 版本上没有发现这一点。

当推送到新的视图控制器或弹出到以前的视图控制器时,它有时会冻结。但奇怪的是,如果您按下主页按钮并从后台启动应用程序。它会运行一点。这里我的意思是新的推送或弹出的视图控制器出现了,但您仍然无法推送或弹出新的视图控制器。


更新: 应用死机时内存、CPU、磁盘使用均正常。

【问题讨论】:

  • 当它推送/弹出时你有什么代码可以分享吗?你在viewDidLoad之类的代码我过去发现它有时在viewDidLoad但它看起来好像是在做推送/弹出的那个?你也有崩溃报告吗?还是控制台输出?
  • @Popeye 抱歉,该应用程序可能会在任何页面冻结。所以没有非常相关的代码可以分享。
  • 我们需要一些东西来缩小范围,只是说它可能会在任何页面上崩溃,这让我们更难在没有代码的情况下给出答案。
  • @Popeye 我知道你想说什么,但我真的找不到任何提示来处理这个错误。这太奇怪了。如果可以的话,我一定会自己解决,而不是在这里发布一个没有太多信息的问题。对不起。
  • 抱歉,我认为我们不能真正帮助你你和它。对不起老兄

标签: ios ios8 freeze


【解决方案1】:

我们终于解决了这个问题。原因是当视图控制器堆栈只有 1 个视图控制器时,我们没有禁用 interactivePopGestureRecognizer。添加检查将解决问题。请参阅下面的代码。

- (void)navigationController:(UINavigationController *)navigationController
       didShowViewController:(UIViewController *)viewController
                    animated:(BOOL)animate
{
    if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)])
    {
        if (self.viewControllers.count > 1)
        {
            self.interactivePopGestureRecognizer.enabled = YES;
        }
        else
        {
            self.interactivePopGestureRecognizer.enabled = NO;
        }
    }
}

【讨论】:

  • 感谢您的回答。你救了我的工作。 :)
  • 有人能解释一下为什么interactivePopGestureRecognizer会冻结导航控制器推送新视图控制器(我确实收到了新视图控制器的func viewWillAppear,但没有收到viewDidAppear。)。
猜你喜欢
  • 1970-01-01
  • 2015-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多