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

iOS左滑手勢失效的解決方法

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

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

self.navigationController.interactivePopGestureRecognizer.enabled = YES;

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

然而這個功能很有局限性,因為它不允許當前視圖控制器自定義了leftBarButtonItem,一旦自定義,右滑功能就會失效。這里有一個方法:

self.navigationController.interactivePopGestureRecognizer.delegate = nil;

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

或者,把手勢的許可打開 也可:

self.navigationController.interactivePopGestureRecognizer.enabled = YES ;

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

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

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

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

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

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

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

有朋友提出以上方式在多次滑動之后會導致界面假死,這里再給出一種解決方案:

在所有除一級頁面之外的頁面的viewDidAppear和viewWillDisappear中加入以下代碼:

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

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

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

在pushviewcontroller之前加入以下代碼:

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

即可在實現(xiàn)滑動返回的同時,避免界面卡死的問題。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

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

    iOS自定義選擇框代碼分享

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

    詳解如何使用ReactiveObjC

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

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

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

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

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

    鍵盤彈出時會覆蓋文本框怎么解決

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

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

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

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

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

    iOS設置圓角的三種方式

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

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

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

    ios開發(fā):一個音樂播放器的設計與實現(xiàn)案例

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

最新評論

金沙县| 嘉义县| 昌平区| 金坛市| 富顺县| 阿拉善右旗| 中卫市| 佛教| 盐亭县| 曲麻莱县| 许昌市| 宾阳县| 磐安县| 会东县| 哈密市| 泰来县| 武川县| 扎兰屯市| 盘山县| 遂昌县| 罗山县| 康定县| 孟连| 南漳县| 宣威市| 阆中市| 开封市| 五莲县| 资源县| 西乌珠穆沁旗| 香港| 铜陵市| 广安市| 松原市| 南川市| 宝坻区| 阿尔山市| 施秉县| 嘉禾县| 义马市| 肇东市|