最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS左滑手勢(shì)失效的解決方法

 更新時(shí)間:2017年09月30日 10:52:28   作者:洛洛愛(ài)吃肉  
這篇文章主要為大家詳細(xì)介紹了iOS左滑手勢(shì)失效的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

iOS7之后,蘋果優(yōu)化了一個(gè)小功能,就是對(duì)于UINavagationController堆棧里的UIViewController,只要輕輕在視圖控制器的左邊緣右滑一下,該視圖控制器就會(huì)pop出棧(前提當(dāng)然是對(duì)于非根視圖控制器而言)。實(shí)現(xiàn)方法很簡(jiǎn)單,一句話搞定:

self.navigationController.interactivePopGestureRecognizer.enabled = YES;

事實(shí)上對(duì)于一個(gè)視圖控制器而言,該屬性的默認(rèn)值即為YES,因此不設(shè)置也能實(shí)現(xiàn)右滑pop的功能。

然而這個(gè)功能很有局限性,因?yàn)樗辉试S當(dāng)前視圖控制器自定義了leftBarButtonItem,一旦自定義,右滑功能就會(huì)失效。這里有一個(gè)方法:

self.navigationController.interactivePopGestureRecognizer.delegate = nil;

設(shè)置代理為nil之后即便自定義了leftBarButtonItem也可以右滑pop。

或者,把手勢(shì)的許可打開 也可:

self.navigationController.interactivePopGestureRecognizer.enabled = YES ;

事實(shí)上如果自定義了leftBarButtonItem,常用的做法是重新設(shè)置代理:

- (void)viewDidAppear:(BOOL)animated{
   self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
}

然后實(shí)現(xiàn)手勢(shì)協(xié)議即可:

#pragma mark - UIGestureRecognizerDelegate
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer*)gestureRecognizer{
  //判斷是否為rootViewController
  if (self.navigationController && self.navigationController.viewControllers.count == 1) {
    return NO;
  }
  return YES;
}

不過(guò)呢,如果我們自定義的返回button只是文字或圖片的話,這樣設(shè)置就可以,不會(huì)失效

  UIBarButtonItem *item = [[UIBarButtonItem alloc]init];
  item.title = @"";
  self.navigationItem.backBarButtonItem = item;

如果是要自定義view的當(dāng)作button的話,就要用leftBarButtonItem設(shè)置,并用上述講的防止手勢(shì)失效的方案.

有朋友提出以上方式在多次滑動(dòng)之后會(huì)導(dǎo)致界面假死,這里再給出一種解決方案:

在所有除一級(jí)頁(yè)面之外的頁(yè)面的viewDidAppear和viewWillDisappear中加入以下代碼:

- (void)viewWillDisappear:(BOOL)animated {
  [super viewWillDisappear:animated];
  //代理置空,否則會(huì)閃退
  if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.delegate = nil;
  }
}
- (void)viewDidAppear:(BOOL)animated { 
  [super viewDidAppear:animated]; 
  //開啟iOS7的滑動(dòng)返回效果 
  if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { 
    //只有在二級(jí)頁(yè)面生效 
    if ([self.navigationController.viewControllers count] == 2) { 
      self.navigationController.interactivePopGestureRecognizer.delegate = self; 
    } 
  } 
} 

在UINavigationController的delegate中實(shí)現(xiàn)以下方法:

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
//開啟滑動(dòng)手勢(shì)
  if ([navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    navigationController.interactivePopGestureRecognizer.enabled = YES;
  }
} 

在pushviewcontroller之前加入以下代碼:

//在切換界面的過(guò)程中禁止滑動(dòng)手勢(shì),避免界面卡死
if ([_currentNav respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
  _currentNav.interactivePopGestureRecognizer.enabled = NO;
}
[_currentNav pushViewController:viewController animated:YES];

即可在實(shí)現(xiàn)滑動(dòng)返回的同時(shí),避免界面卡死的問(wèn)題。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • iOS自定義選擇框代碼分享

    iOS自定義選擇框代碼分享

    這篇文章主要為大家分享了iOS自定義選擇框的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 詳解如何使用ReactiveObjC

    詳解如何使用ReactiveObjC

    RAC 指的就是 RactiveCocoa ,是 Github 的一個(gè)開源框架,能夠通過(guò)信號(hào)提供大量方便的事件處理方案,讓我們更簡(jiǎn)單粗暴地去處理事件,現(xiàn)在分為 ReactiveObjC(OC) 和 ReactiveSwift(swift)。本文將詳細(xì)介紹如何使用ReactiveObjC。
    2021-06-06
  • IOS 數(shù)據(jù)存儲(chǔ)詳解及實(shí)例代碼

    IOS 數(shù)據(jù)存儲(chǔ)詳解及實(shí)例代碼

    這篇文章主要介紹了IOS 數(shù)據(jù)存儲(chǔ)詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • iOS撥打電話的3種實(shí)現(xiàn)方式

    iOS撥打電話的3種實(shí)現(xiàn)方式

    這篇文章主要介紹了iOS撥打電話的3種實(shí)現(xiàn)方式 ,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • 鍵盤彈出時(shí)會(huì)覆蓋文本框怎么解決

    鍵盤彈出時(shí)會(huì)覆蓋文本框怎么解決

    在一些網(wǎng)站登陸界面,我們經(jīng)常會(huì)見到,鍵盤的出現(xiàn)與隱藏操作,那么基于代碼是如何實(shí)現(xiàn)的呢?下面小編寫了具體代碼介紹,特此分享到腳本之家平臺(tái),供大家參考
    2016-04-04
  • 支持Xcode10和適配iPhone XS Max、iPhone XR的方法

    支持Xcode10和適配iPhone XS Max、iPhone XR的方法

    這篇文章主要介紹了支持Xcode10和適配iPhone XS Max、iPhone XR的方法,文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • iOS應(yīng)用開發(fā)中UIScrollView滾動(dòng)視圖的基本用法總結(jié)

    iOS應(yīng)用開發(fā)中UIScrollView滾動(dòng)視圖的基本用法總結(jié)

    這篇文章主要介紹了iOS應(yīng)用開發(fā)中UIScrollView滾動(dòng)視圖的基本用法總結(jié),作者還介紹了重寫UIScrollView中的hitTest方法來(lái)解決長(zhǎng)按的事件問(wèn)題,需要的朋友可以參考下
    2016-02-02
  • iOS設(shè)置圓角的三種方式

    iOS設(shè)置圓角的三種方式

    本文給大家分享ios設(shè)置圓角的三種方式,相對(duì)來(lái)說(shuō)最簡(jiǎn)單的一種是第一種方法,具體內(nèi)容詳情參考下本文
    2017-03-03
  • iOS App開發(fā)中導(dǎo)航欄的創(chuàng)建及基本屬性設(shè)置教程

    iOS App開發(fā)中導(dǎo)航欄的創(chuàng)建及基本屬性設(shè)置教程

    這篇文章主要介紹了iOS App開發(fā)中導(dǎo)航欄的創(chuàng)建及基本屬性設(shè)置教程,即用UINavigationController來(lái)編寫navigation,示例代碼為Objective-C語(yǔ)言,需要的朋友可以參考下
    2016-02-02
  • ios開發(fā):一個(gè)音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn)案例

    ios開發(fā):一個(gè)音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn)案例

    本篇文章主要介紹了ios開發(fā):一個(gè)音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn)案例,具有一定的參考價(jià)值,有需要的小伙伴可以參考下。
    2016-11-11

最新評(píng)論

大石桥市| 梨树县| 会东县| 海安县| 缙云县| 沂源县| 翁牛特旗| 合肥市| 镇平县| 博客| 法库县| 北安市| 内黄县| 桓台县| 浙江省| 锦州市| 历史| 维西| 探索| 尼玛县| 孟连| 双流县| 富裕县| 梅河口市| 凌源市| 赫章县| 丁青县| 大竹县| 灵山县| 河北区| 陕西省| 栾川县| 康乐县| 荆门市| 绥芬河市| 潼关县| 牡丹江市| 黑龙江省| 噶尔县| 青岛市| 九龙坡区|