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