iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios7 – 使用自定义后退按钮滑动手势会冻结根视图控制器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的应用程序上都有自定义后退按钮,它看起来像导航控制器不喜欢它.

所以,我希望iOS7滑动到后退手势与我的自定义后退按钮一起工作.搜索并尝试了不同的方式,但似乎没有一个很有希望.我能得到的最接近的是http://keighl.com/post/ios7-interactive-pop-gesture-custom-back-button/.
但是,现在当我继续推送并弹出导航堆栈时,堆栈中的rootViewController会停止响应任何触摸.

有什么建议?

解决方法

像keighl建议的那样,对UINavigationController进行子类化是正确的方法.但他错过了对根视图控制器的检查,以避免在根视图上执行手势时冻结.
这是一个带有附加检查的修改版本:

CBNavigationController.h:

#import <UIKit/UIKit.h>

@interface CBNavigationController : UINavigationController <UIGestureRecognizerDelegate,UINavigationControllerDelegate>
@end

CBNavigationController.m:

#import "CBNavigationController.h"

@interface CBNavigationController ()
@end

@implementation CBNavigationController
- (void)viewDidLoad
{
    NSLog(@"%s",__FUNCTION__);
    __weak CBNavigationController *weakSelf = self;

    if ([self respondsToSELEctor:@SELEctor(interactivePopGestureRecognizer)])
    {
        self.interactivePopGestureRecognizer.delegate = weakSelf;
        self.delegate = weakSelf;
    }
}

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    NSLog(@"%s",__FUNCTION__);

    if ([self respondsToSELEctor:@SELEctor(interactivePopGestureRecognizer)])
        self.interactivePopGestureRecognizer.enabled = NO;

    [super pushViewController:viewController animated:animated];
}

#pragma mark UINavigationControllerDelegate

- (void)navigationController:(UINavigationController *)navigationController
       didShowViewController:(UIViewController *)viewController
                    animated:(BOOL)animate
{
    NSLog(@"%s",__FUNCTION__);

    // Enable the gesture again once the new controller is shown AND is not the root view controller
    if (viewController == self.viewControllers.firstObject)
    {
        if ([self respondsToSELEctor:@SELEctor(interactivePopGestureRecognizer)])
            self.interactivePopGestureRecognizer.enabled = NO;
    }
    else
    {
        if ([self respondsToSELEctor:@SELEctor(interactivePopGestureRecognizer)])
            self.interactivePopGestureRecognizer.enabled = YES;
    }
}

@end

objective-c

大佬总结

以上是大佬教程为你收集整理的ios7 – 使用自定义后退按钮滑动手势会冻结根视图控制器全部内容,希望文章能够帮你解决ios7 – 使用自定义后退按钮滑动手势会冻结根视图控制器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。