iOS 自訂返回按鈕,保留系統滑動返回

來源:互聯網
上載者:User

標籤:

1.簡介

使用蘋果手機,最喜歡的就是用它的滑動返回.作為一個開發人員,我們在編寫很多頁面的時候,總是會因為這樣那樣的原因使得系統的滑動返回不可用.使用導覽列push出一個控制器,我們在控制器中自訂了一個返回按鈕.這樣系統預設的滑動返回手勢效果就沒有了.

2.解決方案

[1]從A這個控制器push到B這個控制器,我們想要自訂B的返回按鈕,我們可以在A中設定

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"王儼" style:UIBarButtonItemStylePlain target:nil action:nil];

[2]在B控制器設定返回按鈕,我想這應該是大多數人喜歡的選擇,可是當我們在B控制器中設定self.navigationItem.leftBarButtonItem後發現系統的滑動返回手勢失效了.那麼如何可以保留系統的滑動返回手勢了,我們可以B控制器中這樣做.

@interface ViewController () @[email protected] ViewController- (void)viewDidLoad {        [super viewDidLoad];        // 自訂返回按鈕        UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 44, 44)];        [button setTitle:@"王儼2" forState:UIControlStateNormal];        [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];        [button addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside];        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:button];}- (void)back:(UIButton *)button {        [self.navigationController popViewControllerAnimated:YES];}- (void)viewWillAppear:(BOOL)animated {    [super viewWillAppear:animated];    if (self.navigationController.viewControllers.count > 1) {          // 記錄系統返回手勢的代理        _delegate = self.navigationController.interactivePopGestureRecognizer.delegate;          // 設定系統返回手勢的代理為當前控制器        self.navigationController.interactivePopGestureRecognizer.delegate = self;    }}- (void)viewWillDisappear:(BOOL)animated {    [super viewWillDisappear:animated];     // 設定系統返回手勢的代理為我們剛進入控制器的時候記錄的系統的返回手勢代理    self.navigationController.interactivePopGestureRecognizer.delegate = _delegate;}#pragma mark - UIGestureRecognizerDelegate- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {        return self.navigationController.childViewControllers.count > 1;}- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {    return self.navigationController.viewControllers.count > 1;}@end

iOS 自訂返回按鈕,保留系統滑動返回

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.