zoukankan      html  css  js  c++  java
  • iOS 完美解决 interactivePopGestureRecognizer 卡住的问题

    interactivePopGestureRecognizer是iOS7推出的解决VeiwController滑动后退的新功能,虽然很实用,但是坑也很多啊,用过的同学肯定知道问题在哪里,所以具体问题我就不描述了,这里只给出如何完美解决interactivePopGestureRecognizer卡住的问题.

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101

    #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
  • 相关阅读:
    20200713 T3 图论
    20200713 T1序列问题
    【题解】P1441 砝码称重
    【题解】P2858 [USACO06FEB]Treats for the Cows G/S
    【比赛】AISing Programming Contest 2019
    20200709 T3 城堡
    20200709 T2 括号
    20200709 T1 笔记
    20200628 T3 网络检查
    个人技术总结
  • 原文地址:https://www.cnblogs.com/jgCho/p/5265928.html
Copyright © 2011-2022 走看看