资讯专栏INFORMATION COLUMN

[分享]iOS开发-自定义返回按钮后手动添加手势返回解决方案

xiaotianyi / 3061人阅读

摘要:在的里加入如下代码是否正在手势返回中的标示状态在时置为这下终于随便怎么暴力后退都没问题了。导致手势返回实效了。又经过一番折腾,终于找到完美解决手势冲突,加上如下方法只有在返回手势失败的情况下才让其他手势执行。

自定义返回按钮后手势返回就失效了,网上有很多方法都号称完美解决了,但在快速返回(注意:是非常快速的划屏幕边缘)时,依然会出现栈乱的问题导致crash.

网上常见的几种方法:

方法1:http://keighl.com/post/ios7-i...

方法2:http://blog.csdn.net/zhaoxy_t...

这些方法都能解决在push进去时的问题,但连续快速的返回,就会出现栈错乱,常见的错误如下:

nested pop animation can result in corrupted navigation bar

Unbalanced calls to begin/end appearance transitions for XXXController

由于手势返回时,会先执行popViewController,如果当前返回动画还没执行结束,紧接着又触发第二次就会出现问题。

解决思路自然就是第一次动画执行完之前,不让他触发。

在interactivePopGestureRecognizer的delegate里加入如下代码

//是否正在手势返回中的标示状态

static BOOL _isPoping;

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
    if (!_isPoping) {
        _isPoping = YES;
        return YES;
    }
    return NO;
}

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:YES];
    //在didAppear时置为NO
    _isPoping = NO;
}

这下终于随便怎么暴力后退都没问题了。

但是紧接着问题又来了,如果当前view是一个scrollview,有些情况,如果手指在45角方向划,由于返回手势还没执行就被取消了,被scrollview接管了,这时状态置为YES了,但是didAppear却没有调用。导致手势返回实效了。

又经过一番折腾,终于找到完美解决手势冲突,加上如下方法:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    [otherGestureRecognizer requireGestureRecognizerToFail:gestureRecognizer];
    return NO;
}

只有在返回手势失败的情况下才让其他手势执行。


分享来源:
http://ju.outofmemory.cn/entr...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/16090.html

相关文章

  • 一行代码调用支持手势返回iOS定义转场

    摘要:原文来自我的简书前言在平时的开发中,我们进行界面跳转时一般都是采用系统默认的转场动画和,之后,苹果开放了相关让我们可以自定义转场动画,让更有活力。效果图如下现在支持左滑上滑下滑右滑四种手势进行返回,可以通过属性修改。 原文来自:我的简书 前言 在平时的开发中,我们进行界面跳转时一般都是采用系统默认的转场动画(Push 和 Present),iOS7之后,苹果开放了相关API,让我们可以...

    learn_shifeng 评论0 收藏0
  • 【译】让你的应用支持旁白(iOS无障碍化官方文档)

    摘要:持续关注不支持无障碍的元素并记录一个清单用于添加更好的无障碍支持能力吧。使用旁白浏览你的使用旁白测试,需要你使用旁白功能的一组特定手势。首先需要确认,这个元素是否是无障碍化的,然后添加合适的和。 本文将介绍如何通过添加旁白(VoiceOver)能力让你的iOS App对盲人等视障人士更加友好。 概要 旁白是一种屏幕阅读能力,它使得人们可以在不看屏幕的情况下浏览设备的界面。盲人用户在使用...

    dabai 评论0 收藏0
  • Flutter交互实战-即刻App探索页下拉&拖拽效果

    摘要:前言最近比较热门,但是成体系的文章并不多,前期避免不了踩坑我这篇文章主要介绍如何使用实现一个比较复杂的手势交互,顺便分享一下我在使用过程中遇到的一些小坑,减少大家入坑作者链接先睹为快本项目支持运行,效果如下对了,顺便分享一下生成的小窍门,建 前言 Flutter最近比较热门,但是Flutter成体系的文章并不多,前期避免不了踩坑;我这篇文章主要介绍如何使用Flutter实现一个比较复杂...

    miracledan 评论0 收藏0
  • Flutter交互实战-即刻App探索页下拉&拖拽效果

    摘要:前言最近比较热门,但是成体系的文章并不多,前期避免不了踩坑我这篇文章主要介绍如何使用实现一个比较复杂的手势交互,顺便分享一下我在使用过程中遇到的一些小坑,减少大家入坑作者链接先睹为快本项目支持运行,效果如下对了,顺便分享一下生成的小窍门,建 前言 Flutter最近比较热门,但是Flutter成体系的文章并不多,前期避免不了踩坑;我这篇文章主要介绍如何使用Flutter实现一个比较复杂...

    wdzgege 评论0 收藏0
  • iOS事件机制整理

    摘要:事件机制整理目录相关概念事件冲突使用案例相关概念类负责处理事件传递,均继承自它。则需要扩大的响应范围,将事件传递到。此为花边的重写方法,执行自己想要的操作执行一段动画参考文章触摸事件全家桶点击事件和手势冲突深入浅出事件机制 iOS事件机制整理 目录 相关概念 事件冲突 使用案例 相关概念 UIResponder UIResponder类负责处理事件传递,UIView、UIVie...

    xingpingz 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<