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

右滑返回手勢(shì)和UIScrollView中手勢(shì)沖突的解決方法

 更新時(shí)間:2017年02月25日 08:54:40   作者:jgCho  
這篇文章主要為大家詳細(xì)介紹了右滑返回手勢(shì)和UIScrollView中手勢(shì)沖突的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

項(xiàng)目中遇到一個(gè)頁(yè)面中是以一個(gè)scrollview橫向Tab展示兩個(gè)不同功能的顯示,譬如消息和公告功能,但是由于滑動(dòng)返回手勢(shì)和scrollview的滑動(dòng)返回手勢(shì)沖突了,導(dǎo)致頁(yè)面不再能夠滑動(dòng)返回。類似的還有圖片瀏覽功能也出現(xiàn)過。

iOS系統(tǒng)中,滑動(dòng)返回手勢(shì),其實(shí)是一個(gè)UIPanGestureRecognizer,系統(tǒng)默認(rèn)的操作是只有滑動(dòng)屏幕的左邊的某個(gè)位置,UIPanGestureRecognizer才會(huì)起作用。UIScrollView的滑動(dòng)手勢(shì)也是UIPanGestureRecognizer。那在側(cè)邊滑動(dòng)時(shí),讓UIScrollView的不響應(yīng)事件就OK了嘛,首先想到了繼承UIScrollView 重寫下面的方法,讓滑動(dòng)側(cè)邊時(shí)scrollView不響應(yīng)事件,根據(jù)響應(yīng)者鏈,事件最終會(huì)傳遞給下方的滑動(dòng)手勢(shì)。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event   {
   if (point.x < location.x) { // location.x為系統(tǒng)的某個(gè)點(diǎn)的x
     return nil;
   } else {
     return [super hitTest:point withEvent:event];
   }
}

但是,這樣有個(gè)問題,就是在一個(gè)頁(yè)面不同tab時(shí),也需要滑動(dòng)切換,滑動(dòng)返回。

由于scrollView的滑動(dòng)手勢(shì)攔截了事件,那我重寫scrollView中panGestureRecognizer的代理方法,讓它不攔截就好了嘛。于是繼承UIScrollView,重寫下面的方法。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {

    if ([self panBack:gestureRecognizer]) {
       return YES;
    }
    return NO;

 }


- (BOOL)panBack:(UIGestureRecognizer *)gestureRecognizer {

  if (gestureRecognizer == self.panGestureRecognizer) {
     UIPanGestureRecognizer *pan = (UIPanGestureRecognizer *)gestureRecognizer;
     CGPoint point = [pan translationInView:self];
     UIGestureRecognizerState state = gestureRecognizer.state;
     if (UIGestureRecognizerStateBegan == state || UIGestureRecognizerStatePossible == state) {
       CGPoint location = [gestureRecognizer locationInView:self];
       if (point.x > 0 && location.x < “這個(gè)自己設(shè)定" && self.contentOffset.x <= 0) {
          return YES;
       }
     }
   }
   return NO;

}

需要側(cè)邊滑動(dòng)時(shí) panBack 返回YES,這時(shí)候,我讓scrollView的手勢(shì)和頁(yè)面的滑動(dòng)返回手勢(shì)共存,scrollView不攔截手勢(shì),那不就可以滑動(dòng)返回了嗎。好了,測(cè)試一下,可以滑動(dòng)返回,但是滑動(dòng)返回時(shí),為什么scrollView也跟著在滑動(dòng)呢,太影響美觀了,看來(lái)還需要另外的辦法,我又回到了第一種辦法時(shí)的想法,讓scrollView切換的時(shí)候相應(yīng)panGesture,滑動(dòng)返回的時(shí)候不響應(yīng),那重寫scrollView中的另外一個(gè)panGestureRecognizer的代理方法。

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {

  if ([self panBack:gestureRecognizer]) {
    return NO;
  }
  return YES;

}

第二種方法:

 -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
 { 
   // 首先判斷otherGestureRecognizer是不是系統(tǒng)pop手勢(shì) 
   if ([otherGestureRecognizer.view isKindOfClass:NSClassFromString(@"UILayoutContainerView")]) { 
     // 再判斷系統(tǒng)手勢(shì)的state是began還是fail,同時(shí)判斷scrollView的位置是不是正好在最左邊 
     if (otherGestureRecognizer.state == UIGestureRecognizerStateBegan && self.contentOffset.x == 0) { 
       return YES; 
     } 
   } 

   return NO; 
}

以上的代碼都是在一個(gè)自定義的UIScrollView上的,重寫上面的方法即可。然后讓橫向滾動(dòng)的scrollView繼承這個(gè)自定義UIScrollView就OK了。

原理:
scrollView的pan手勢(shì)會(huì)讓系統(tǒng)的pan手勢(shì)失效,所以我們只需要在系統(tǒng)手勢(shì)失效且scrollView的位置在初始位置的時(shí)候讓兩個(gè)手勢(shì)同時(shí)啟用就可以了。

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

相關(guān)文章

  • iOS推送之本地通知UILocalNotification

    iOS推送之本地通知UILocalNotification

    這篇文章主要為大家詳細(xì)介紹了iOS本地通知UILocalNotification,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS實(shí)現(xiàn)圖片折疊效果

    iOS實(shí)現(xiàn)圖片折疊效果

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)圖片折疊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • ios開發(fā) try-catch引起的野指針問題排查

    ios開發(fā) try-catch引起的野指針問題排查

    這篇文章主要為大家介紹了ios開發(fā) try-catch引起的野指針問題排查,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • iOS實(shí)現(xiàn)視頻下載并自動(dòng)保存到相冊(cè)功能

    iOS實(shí)現(xiàn)視頻下載并自動(dòng)保存到相冊(cè)功能

    這篇文章主要為大家詳細(xì)介紹了ios 視頻下載功能實(shí)現(xiàn),并自動(dòng)保存到相冊(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 基于IOS端微信分享失效的踩坑及解決方法

    基于IOS端微信分享失效的踩坑及解決方法

    下面小編就為大家分享一篇基于IOS端微信分享失效的踩坑及解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-01-01
  • 解決Xcode8打包上傳構(gòu)建版本無(wú)效的辦法

    解決Xcode8打包上傳構(gòu)建版本無(wú)效的辦法

    這篇文章主要介紹的是自己在打包上傳項(xiàng)目的時(shí)候遇到的一個(gè)問題,通過自己的努力一步步解決了,現(xiàn)將解決方法方法分享給大家,希望給同樣遇到這個(gè)問題的朋友們能有所幫助,下面來(lái)一起看看吧。
    2016-09-09
  • 淺談WKWebView 在64位設(shè)備上的白屏問題

    淺談WKWebView 在64位設(shè)備上的白屏問題

    下面小編就為大家?guī)?lái)一篇淺談WKWebView 在64位設(shè)備上的白屏問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-04-04
  • iOS 沙盒圖片保存讀取實(shí)例

    iOS 沙盒圖片保存讀取實(shí)例

    下面小編就為大家分享一篇iOS 沙盒圖片保存讀取實(shí)例,具有很的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2017-12-12
  • 輕松搞定iOS遠(yuǎn)程消息推送

    輕松搞定iOS遠(yuǎn)程消息推送

    這篇文章主要幫助大家輕松搞定iOS遠(yuǎn)程消息推送,討論遠(yuǎn)程推送的流程與配置過程,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS實(shí)現(xiàn)轉(zhuǎn)盤效果

    iOS實(shí)現(xiàn)轉(zhuǎn)盤效果

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)轉(zhuǎn)盤效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04

最新評(píng)論

七台河市| 疏勒县| 定边县| 阜阳市| 连城县| 濮阳县| 府谷县| 中超| 万全县| 固阳县| 嘉荫县| 淮南市| 太湖县| 冀州市| 彰化县| 晋宁县| 西峡县| 克山县| 岢岚县| 科尔| 海南省| 溧阳市| 华宁县| 克东县| 马尔康县| 池州市| 榆社县| 贺州市| 定兴县| 白朗县| 定陶县| 荃湾区| 阿拉善右旗| 江陵县| 高台县| 吉林省| 岚皋县| 准格尔旗| 班玛县| 赞皇县| 翁牛特旗|