iOS弱网环境下,重复点击导致的连续push的问题

  • 最近网络环境比较差,测试APP的时候也出现了一些问题,例如:点击button需要跳转到另一个页面,点一次没反应,多点了几次,结果就连续push好多这个页面。
    (BaseNavigationController 继承自UINavigationController,在所有使用导航栏的地方都使用BaseNavigationController,像修改返回按钮的样式,文字只需要在BaseNavigationController中进行修改,所有的地方都会被修改)
  • 最后解决了这个问题,在这里记录下,如有。

//在viewDidLoad中添加实现UINavigationControllerDelegate

 -(void)viewDidLoad
{

    [super viewDidLoad];
    __weak BaseNavigationController *weakSelf = self;
    if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)])  {
        self.interactivePopGestureRecognizer.delegate = weakSelf;
        self.delegate = weakSelf;
    }
}
  • 实现协议方法
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
 {
  //这个方法是在当前控制器执行push的时候,禁止手势右划返回,避免出现crash的现象,(也可以不实现好像也没什么影响)
   if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
      self.interactivePopGestureRecognizer.enabled = NO;
    }
//判断上一个控制器和现在的控制器是不是同一个,如果是,返回。如果不是push到当前控制器,这就有效避免了同一个控制器连续push的问题
    if ([self.topViewController isMemberOfClass:[viewController class]]) {
        return;
    }

    [super pushViewController:viewController animated:animated];
}
  • 如果实现了刚才的协议方法,禁止右划返回,就应该实现下面的协议方法,在控制器已经出现的时候,将右划返回打开。
 - (void)navigationController:(UINavigationController *)navigationController
   didShowViewController:(UIViewController *)viewController
                animated:(BOOL)animate
{

   if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
       self.interactivePopGestureRecognizer.enabled = YES;
   }
}

希望能有帮助,看的懂。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言的前言 唐巧前辈在微信公众号「iOSDevTips」以及其博客上推送了我的文章后,我的 Github 各项指标...
    VincentHK阅读 10,772评论 3 44
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,377评论 30 472
  • 有认真干活吗?! 附上浏览器被劫持的解决办法 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。...
    还在呢死胖纸阅读 1,716评论 0 2
  • 我还是很喜欢你,像斜阳投向罅隙,不论朝夕;我还是很喜欢你,像云漂泊九万里,不曾歇息;多年以后,我再也不喜欢你,像秋...
    初小初阅读 6,584评论 2 2
  • 一年365天 只有一个生日 生日蛋糕不仅仅是爱的礼物 更是甜蜜的祝福 麦芙仕烘焙小屋 把爱与祝福混合 让亲情、友情...
    一湫水阅读 1,092评论 0 0