ios開發 向右滑動手勢實現返回.在NavigationController中如何設定

來源:互聯網
上載者:User

標籤:

在navigationController中實現向右滑動 返回功能

系統提供的backbarbuttonitem,不用添加任何代碼即可實現向右滑動後退功能,但是往往要對按鈕修改樣式等時,就需要自訂leftbarbuttonitem,此時向右滑動即失效.通過下面方法即可解決該問題.(本人親自實驗過)

 

 

主要是通過設定navigationController.interactivePopGestureRecognizer 此手勢的一些屬性,此手勢大家可以通過sdk查看說明,這裡不細說

 

1. self.navigationController.interactivePopGestureRecognizer.enabled = YES | NO;      手勢有效與否

2. self.navigationController.interactivePopGestureRecognizer.delegate = self;               手勢的代理,一般會設定為self

1中的屬性,再viewcontroller中預設的設定為YES,即手勢有效.按照2中的屬性設定後,當前的viewcontroller即可以實現該向右滑動後退功能,但是當回到navigationController的rootView中再次做出向右滑動時,程式會有問題(再次push子controller時,程式卡在當前介面無法跳轉).有效解決方案如下:

說明:有兩個controllerA,B

navigationController的rootview設定為A,在A中點擊按鈕後push B.在A的 -(void)viewDidAppear:(BOOL)animated方法中加入self.navigationController.interactivePopGestureRecognizer.enabled = NO;代碼如下:

 

- (void)viewDidAppear:(BOOL)animated

{

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {

        self.navigationController.interactivePopGestureRecognizer.enabled = NO;    //讓rootView禁止滑動

    }

}

然後再B中的- (void)viewDidLoad方法中加入

 

- (void)viewDidLoad

{

    // 配置返回按鈕

 

    UIBarButtonItem * backItem = [self barButtonForImageNames:@[@"icon-返回", @"", @""] action:@selector(popBack)];

    backItem.title = @"";

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {

        self.navigationController.interactivePopGestureRecognizer.enabled = YES;

        self.navigationController.interactivePopGestureRecognizer.delegate = self;

    }

    self.navigationItem.leftBarButtonItem = backItem;

 

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {

 

        self.navigationController.interactivePopGestureRecognizer.delegate = self; 

    }

}

這樣即可以保證再A中向右滑動後再次pushB時不會卡在A介面.

再項目中大家一般會建立風格統一的介面,一般都會建立一個基礎viewcontroller,再此viewcontroller擴充一個配置leftbarbutton的方法,在該方法中加入B的viewDidLoad中的代碼,這樣在建立leftbarbutton的同時,直接加了返回的操作(不用每個viewController中都加入這樣一段代碼).然後只在navigationController的rootView中加入A的(void)viewDidAppear:(BOOL)animated方法即可.

搞定!如果有更好的接受大家拍磚

ios開發 向右滑動手勢實現返回.在NavigationController中如何設定

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.