iOS开发系列iOS移动开发ios工具大全

iOS - 一句话处理导航自定义返回键之第三方处理

2015-09-15  本文已影响3006人  WhoJun

最近看到一个哥们,在简信发了一个处理自定义返回键的文章。

那篇文章的用法我以前我就用过了,但是有个很严重的bug,就是会卡界面,虽然这个bug不太好触发。

以前我以为只要苹果提供的改一些值是没问题的,但是我错了,太小看苹果内部封装的处理了。

UINavigationController 里面有个手势。

//UINavigationController.h
@property(nullable, nonatomic, readonly) UIGestureRecognizer *interactivePopGestureRecognizer NS_AVAILABLE_IOS(7_0);

在网上有很多帖子都在写只有将这个手势的delegate重新赋值,就会有在pop的返回手势。

self.interactivePopGestureRecognizer.delegate = self;

这个确实是有这个返回手势效果,但是会延伸出一个bug,就是之前说的卡界面。

那么如何解决。

其实解决思路有很多,我之前写的,就是添加个手势在UINavigationControllerview 中自己处理。

但是耦合性太强,最主要太挫了,不符合我的理念。

所以在网上找了两个不错的第三方,分别是MLTransitionFDFullscreenPopGesture

这两种返回有啥区别呢?

MLTransition


这一个返回效果是跟iOS7以上原生自带的返回效果是一样的,并且处理了对scrollView的冲突。

目前我在写的app也在使用它。

他的实现方式是全局的,只需要一句话,非常简单,还有两种手势任你挑选。

//WJAppDelegate.m
@implementation WJAppDelegate
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    //nav 手势处理 , MLTransitionGestureRecognizerTypeScreenEdgePan,MLTransitionGestureRecognizerTypePan
    [MLTransition validatePanPackWithMLTransitionGestureRecognizerType:MLTransitionGestureRecognizerTypeScreenEdgePan];
    return YES;
}
...
@end

FDFullscreenPopGesture


这个是百度的大神写的返回手势。

目前多个百度app都在使用(百度知道,百度贴吧等),还有一些其他APP也在使用这个。

具体返回效果很炫酷,丝滑流畅。

非常感谢这个作者提供开源。

具体用法我不说了,会在参考上贴上此作者的博客链接。

参考:

molonhttps://github.com/molon/MLTransition

@我就叫Sunny怎么了http://blog.sunnyxx.com/2015/06/07/fullscreen-pop-gesture/

总结:

返回手势这一块,应该有很多人纠结,我也纠结过。

以上提供两种方法,看具体需求使用。

ps:此文章以上两个第三方作者觉得我侵权可以在新浪微博私信我。@千年一之后

上一篇 下一篇

猜你喜欢

热点阅读