iOS 中导航控制器全屏向右滑动返回上一界面
在iOS中,導(dǎo)航控制器默認就自帶了側(cè)滑功能,當(dāng)用戶在界面的左邊(左邊邊緣)滑動的時候,才會有側(cè)滑功能。但是我們往往在開發(fā)的過程中需要在屏幕的任意位置滑動,都需要返回到上一個界面。
?
多說無意,直接看代碼:
效果圖部分:
代碼部分(第二個界面):
#import "CJSecondViewController.h"
?
@interface CJSecondViewController ()<UIGestureRecognizerDelegate>
?
@end
?
@implementation CJSecondViewController
?
- (void)viewDidLoad {
? ? [super viewDidLoad];
?? ?
? ? NSLog(@"%@",self.navigationController.interactivePopGestureRecognizer);
?? ?
? ? // 獲取系統(tǒng)自帶滑動手勢的target對象
? ? id target = self.navigationController.interactivePopGestureRecognizer.delegate;
? ? // 創(chuàng)建全屏滑動手勢,調(diào)用系統(tǒng)自帶滑動手勢的target的action方法
? ? UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)];
? ? // 設(shè)置手勢代理,攔截手勢觸發(fā)
? ? pan.delegate = self;
? ? // 給導(dǎo)航控制器的view添加全屏滑動手勢
? ? [self.view addGestureRecognizer:pan];
? ? // 禁止使用系統(tǒng)自帶的滑動手勢
? ? self.navigationController.interactivePopGestureRecognizer.enabled = NO;
?? ?
? ? // Do any additional setup after loading the view.
? ? self.view.backgroundColor = [UIColor whiteColor];
?? ?
? ? self.title = @"圖片展示";
?? ?
? ? UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 200, 200, 200)];
? ? imageView.image = [UIImage imageNamed:@"4.jpg"];
? ? [self.view addSubview:imageView];
}
?
// 什么時候調(diào)用:每次觸發(fā)手勢之前都會詢問下代理,是否觸發(fā)。
// 作用:攔截手勢觸發(fā)
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
? ? // 注意:只有非根控制器才有滑動返回功能,根控制器沒有。
? ? // 判斷導(dǎo)航控制器是否只有一個子控制器,如果只有一個子控制器,肯定是根控制器
? ? if (self.childViewControllers.count == 1) {
? ? ? ? // 表示用戶在根控制器界面,就不需要觸發(fā)滑動手勢,
? ? ? ? return NO;
? ? }
? ? return YES;
}
@end
具體原因和詳情信息請繼續(xù)查看:http://www.cocoachina.com/ios/20150811/12897.html
轉(zhuǎn)載于:https://www.cnblogs.com/chenjie-ios/p/4724788.html
總結(jié)
以上是生活随笔為你收集整理的iOS 中导航控制器全屏向右滑动返回上一界面的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言基础_函数指针
- 下一篇: 公路建厂最短路径问题