iOS app 右滑返回
前提條件,存在A和B兩個頁面,A是主界面,A push 到 B
方法一:如果B頁面的返回按鈕要用自定義的按鈕(在iOS7中,如果使用了UINavigationController,那么系統(tǒng)自帶的附加了一個從屏幕左邊緣開始滑動可以實現(xiàn)pop的手勢。但是,如果自定義了navigationItem的leftBarButtonItem,那么這個手勢就會失效。)
在A界面:
- (void)viewDidAppear:(BOOL)animated {
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;//重新設(shè)置代理
self.navigationController.interactivePopGestureRecognizer.enabled = NO;//本頁面不能右滑
}
在B里面:
設(shè)置返回按鈕:
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
backBtn.frame = CGRectMake(5, 2, 21, 35);
[backBtn setImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];
[[backBtn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {
[self.navigationController popViewControllerAnimated:YES];
}];
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
self.navigationItem.leftBarButtonItem = backItem;
self.navigationController.interactivePopGestureRecognizer.enabled = YES;//最重要的一步
方法二:在A頁面里面(A頁面里面的backBarButtonItem其實就是我們看到的B頁面的返回按鈕,B頁面的leftBar是左側(cè)的按鈕,注意優(yōu)先級,B里面有自定義leftBar,顯示B頁面的,如果沒有,看A界面,如果里面有backBarButtonItem,顯示,如果沒有,就是系統(tǒng)默認(rèn)的那個)
UIImage* image = [UIImage imageNamed:@"back"];
UIBarButtonItem *item = [[UIBarButtonItem alloc] init];
[item setBackButtonBackgroundImage:[image resizableImageWithCapInsets:UIEdgeInsetsMake(0, image.size.width, 0, 0)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[item setBackButtonTitlePositionAdjustment:UIOffsetMake(-400.f, 0) forBarMetrics:UIBarMetricsDefault];
self.navigationItem.backBarButtonItem = item;
self.navigationItem.backBarButtonItem = item;
我采用的是方法一,方法二我沒有辦法調(diào)整返回按鈕的位置
轉(zhuǎn)載于:https://www.cnblogs.com/zhangxueke/p/7365180.html
總結(jié)
以上是生活随笔為你收集整理的iOS app 右滑返回的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java标识符遵循规范
- 下一篇: RefreshListView中onIt