zoukankan      html  css  js  c++  java
  • ios侧滑返回:完美解决 interactivePopGestureRecognizer 卡住的问题

    interactivePopGestureRecognizer是iOS7推出的解决VeiwController滑动后退的新功能,虽然很实用,但是坑也很多啊(比如在rootViewcontroller下,使用侧滑返回手势,可能就卡住了),这里给出如何完美解决interactivePopGestureRecognizer卡住的问题.

    当然我们要自定义UINavigationController来解决这个问题:

    #import "MMNavController.h"
    
    
    @interface MMNavController ()
    {
        
    }
    
    @end
    
    @implementation MMNavController
    
    - (id)initWithRootViewController:(UIViewController *)rootViewController
    {
        self = [super initWithRootViewController:rootViewController];
        if (self) {
            // Custom initialization
            
        }
        return self;
    }
    
    
    - (void)viewDidLoad
    {
        
        __weak MMNavController *weakSelf = self;
        
        if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)])
        {
            self.interactivePopGestureRecognizer.delegate = weakSelf;
            
            self.delegate = weakSelf;
        }
        
    }
    
    - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
    {
        
        if ( [self respondsToSelector:@selector(interactivePopGestureRecognizer)] && animated == YES )
        {
            self.interactivePopGestureRecognizer.enabled = NO;
        }
        
        [super pushViewController:viewController animated:animated];
        
    }
    
    - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
    {
        if ( [self respondsToSelector:@selector(interactivePopGestureRecognizer)] && animated == YES )
        {
            self.interactivePopGestureRecognizer.enabled = NO;
        }
        
        return  [super popToRootViewControllerAnimated:animated];
        
    }
    
    - (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated
    {
        if( [self respondsToSelector:@selector(interactivePopGestureRecognizer)] )
        {
            self.interactivePopGestureRecognizer.enabled = NO;
        }
        
        return [super popToViewController:viewController animated:animated];
        
    }
    
    #pragma mark UINavigationControllerDelegate
    
    - (void)navigationController:(UINavigationController *)navigationController
           didShowViewController:(UIViewController *)viewController
                        animated:(BOOL)animate
    {
        if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)])
        {
            self.interactivePopGestureRecognizer.enabled = YES;
        }
    }
    
    
    -(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
    {
        
        if ( gestureRecognizer == self.interactivePopGestureRecognizer )
        {
            if ( self.viewControllers.count < 2 || self.visibleViewController == [self.viewControllers objectAtIndex:0] )
            {
                return NO;
            }
        }
        
        return YES;
    }
    
    
    @end

    转载自:http://adad184.com/2013/12/12/2013-12-12-wan-mei-jie-jue-interactivepopgesturerecognizer-qia-zhu-de-wen-ti/

  • 相关阅读:
    LeetCode算法题-Find Pivot Index(Java实现)
    LeetCode算法题-Longest Word in Dictionary(Java实现)
    LeetCode算法题-1-bit and 2-bit Characters(Java实现)
    2016-8-4学习正则表达式
    doT 这个模板 是怎么实现的?
    manually Invoking Model Binding / Model Binding /Pro asp.net mvc 5
    隐隐约约 听 RazorEngine 在 那里 据说 生成代码 很 美。
    web api 的 安全 认证问题 , 对外开放 的 时候 需要考虑到安全的问题
    鼠标滑过显示图片
    页面加载中效果实现
  • 原文地址:https://www.cnblogs.com/benbenzhu/p/4365292.html
Copyright © 2011-2022 走看看