UICollectionView與UITableView混用手勢沖突


前言

最近在重構某個模塊,以后別人封裝的所謂的基類就像一坨死一樣,看見就惡心,相信同行的你們能夠明白那種心情。為什么要重構?並不是真的因為它像一坨死,而是因為這個模塊是用戶使用最頻繁的,而且出現了不少bug,最重要的是這bug還是p1級別的致命bug。

曾經經過了幾天的壓力測試都沒有復現出來,但是用戶卻頻繁反饋,這就是決定重構的原因了。重構的界面是這樣的:

image

當UICollectionView中的每個cell放的是一個controller.view而這個controller.view又放一個UITableVIew時,這時候將collectionView的滾動方向設置為橫向就可以了。

但是,如果我們設置了bounces為YES,那么右滑返回手勢就沒有了,怎么辦?

實現思路

共使用了四個控制器類:

  • ContentController:手勢沖突當前所在的控制器,使用UICollectionView,每個cell對應於一個控制器的view
  • SiteController1:標簽一對應的控制器
  • SiteController2:標簽二對應的控制器
  • SiteController3:標簽三對應的控制器

配置UICollectioView

 

當我們滾動到標簽三時,再滑動就會超出范圍,此時會顯示部分空白,這體驗不太好,不希望可以再滑動了。同樣,當滑動到標簽一時,再右滑時,不希望顯示空白部分,而是觸發右滑返回手勢。

解決方案

解決方案就是實現UIScrollView的代理方法,當超出屏寬*2時,限制在屏寬*2的位置處。同樣,當小於0時,就限制在0處,這樣就解決了出現空白的問題。同時,這樣就不會關閉用戶響應,因此系統的右滑返回手勢仍然可以觸發。

經過這么一折騰,大家明白如何解決的了嗎?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM