English | 中文版
迄今处理右滑手势最优雅的方式。
你是否遇到过以下需求:
- 当你自定义了
leftNavigationItem
后,屏幕边缘的右滑pop手势失效了。 - 当你想让用户确认是否返回需要弹出alert的时候,你需要拦截用户右滑pop手势。
现在你可以用一行代码来实现你的需求。
AppDelegate.m
#import "AppDelegate.h"
#import "PopEvent.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[PopEvent restorePopGestureRecognizer];
return YES;
}
@end
ViewController1.m
#import "ViewController1.h"
#import "PopEvent.h"
@implementation ViewController1
- (void)viewDidLoad {
[super viewDidLoad];
[self addPopEventSelector:@selector(popEvent) viewController:self];
}
- (void)popEvent {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"PopEvent!" message:@"do something" preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]];
[self presentViewController:alertController animated:YES completion:nil];
}
你可以通过CocoaPods来集成PopEvent。
pod 'PopEvent'
把PopEvent
文件夹拖到你的项目中。
PopEvent有两种功能,首先一定是在需要的地方#import "PopEvent.h"
。
仅需要在AppDelegate
的-application: didFinishLaunchingWithOptions:
方法里添加一行代码即可。
如果你不是用storyboard初始化的ViewController,一定要确保这行代码在RootViewController初始化之前执行。
[PopEvent restorePopGestureRecognizer];
仅需要在你想拦截手势的那个ViewController里添加一行代码即可。
[self addPopEventSelector:@selector(popEvent) viewController:self];
第一个参数是拦截后需要执行的方法selector,根据需要替换。
Example里有详细的使用样例。
欢迎给我发邮件,或者提issue。
本项目遵循MIT协议,欢迎为开源作出贡献。