溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

iOS 自定義返回按鈕保留系統(tǒng)滑動返回功能

發(fā)布時間:2020-09-12 12:19:30 來源:腳本之家 閱讀:210 作者:Lea__DongYang 欄目:移動開發(fā)

先給大家展示下效果圖:

iOS 自定義返回按鈕保留系統(tǒng)滑動返回功能

 1.簡介

使用蘋果手機,最喜歡的就是用它的滑動返回.作為一個開發(fā)者,我們在編寫很多頁面的時候,總是會因為這樣那樣的原因使得系統(tǒng)的滑動返回不可用.使用導(dǎo)航欄push出一個控制器,我們在控制器中自定義了一個返回按鈕.這樣系統(tǒng)默認(rèn)的滑動返回手勢效果就沒有了.

2.解決方法

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

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

[2]在B控制器設(shè)置返回按鈕,我想這應(yīng)該是大多數(shù)人喜歡的選擇,可是當(dāng)我們在B控制器中設(shè)置self.navigationItem.leftBarButtonItem后發(fā)現(xiàn)系統(tǒng)的滑動返回手勢失效了.那么如何可以保留系統(tǒng)的滑動返回手勢了,我們可以B控制器中這樣做.

@interface ViewController ()  
@end@implementation 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) {     // 記錄系統(tǒng)返回手勢的代理 
    _delegate = self.navigationController.interactivePopGestureRecognizer.delegate;     // 設(shè)置系統(tǒng)返回手勢的代理為當(dāng)前控制器 
    self.navigationController.interactivePopGestureRecognizer.delegate = self; 
  } 
} 
- (void)viewWillDisappear:(BOOL)animated { 
  [super viewWillDisappear:animated];   // 設(shè)置系統(tǒng)返回手勢的代理為我們剛進入控制器的時候記錄的系統(tǒng)的返回手勢代理 
  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 自定義返回按鈕保留系統(tǒng)滑動返回功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對億速云網(wǎng)站的支持!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI