IOS 7 interactivePopGestureRecognizer正在冻结应用

我有奇怪的错误,我不知道如何抓住这个问题.在我的应用程序中,我有不同的控制器.当我将controller1拖到导航控制器上并滑动回来时,一切都会很好.但是,如果我按下导航控制器1,进入控制器1推控制器2并尝试刷回来 – 我得到一个冻结的应用程序.如果回到后面的按钮 – 一切正常.

我怎么能抓住我的问题?

解决方法

当使用滑动手势时,我遇到类似的冻结界面问题.
在我的情况下,问题是在controller1.viewDidAppear我禁用滑动手势:self.navigationController.interactivePopGestureRecognizer.enabled = NO.所以当用户从contorller2开始刷卡时,控制器1.viewDidAppear被触发,手势被禁用.

我通过在controller1中设置self.navigationController.interactivePopGestureRecognizer.delegate = self并实现gestureRecognizerShouldBegin :,而不是禁用手势识别器来解决这个问题:

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)] &&
            gestureRecognizer == self.navigationController.interactivePopGestureRecognizer) {
        return NO;
    }
    return YES;
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...