iOS - 滑動(dòng)視圖嵌套處理

iOS 多個(gè)滑動(dòng)視圖嵌套的手勢(shì)觸摸處理

實(shí)現(xiàn)思路

界面設(shè)計(jì)
  • 前提條件:

    • 頁(yè)面構(gòu)成: 整體頁(yè)面為一個(gè)滑動(dòng)視圖, 其中最上方為類(lèi)似 header 并且包含一個(gè) SegementView 的視圖, 下方為多個(gè)并列的 TableView 或者 ScrollView 視圖
    • 頁(yè)面需求: 當(dāng)滑動(dòng)下方的視圖時(shí)需要讓 header 跟隨滑動(dòng)直到滑動(dòng)到 segement 時(shí)停止滑動(dòng), 接下來(lái)就只能滑動(dòng)下方的 tableview 并且可以無(wú)限加載數(shù)據(jù)以及橫向切換 tableview , 當(dāng)向下滑動(dòng)的時(shí)候, 如果滑動(dòng)到最頂層的時(shí)候 header 會(huì)跟隨出現(xiàn).
  • 實(shí)現(xiàn)思路分析

      1. 通過(guò)監(jiān)聽(tīng)最外層的 ScrollView 的偏移量, 對(duì)其 ScrollEnable 屬性進(jìn)行更改, 使滑動(dòng)手勢(shì)的作用對(duì)象不同, 實(shí)現(xiàn)需求.
      1. 通過(guò)重寫(xiě)每個(gè)視圖的 hitTest 函數(shù)操作響應(yīng)實(shí)現(xiàn).
      1. 監(jiān)聽(tīng)最外層 ScrollView 的偏移量, 通過(guò)設(shè)置固定的偏移量來(lái)保證響應(yīng)手勢(shì)的切換.
  • 實(shí)驗(yàn)結(jié)果

      1. 可以實(shí)現(xiàn)需求, 但是因?yàn)?ScrollEnable 屬性更改之后需要二次滑動(dòng)才能切換滑動(dòng)響應(yīng)視圖, 因此, 方案放棄.
      1. hitTest 函數(shù)的響應(yīng)時(shí)機(jī)只有手指觸摸時(shí)的第一下, 因此實(shí)現(xiàn)過(guò)程太復(fù)雜, 放棄.
      1. 這個(gè)方法不是我想出來(lái)的, 而是在查找資料的時(shí)候發(fā)現(xiàn)的大神思路, 此處放鏈接, 最終證實(shí)有效, 完美解決問(wèn)題.

具體實(shí)現(xiàn)

寫(xiě)在最后

  • 最終完成后, 還是有個(gè)疑問(wèn), 同時(shí)存在兩個(gè)滾動(dòng)視圖, 如果一個(gè)滾動(dòng)視圖的偏移量確定, 那么滑動(dòng)手勢(shì)就會(huì)作用在另一個(gè)滾動(dòng)視圖上, 這個(gè)規(guī)則總感覺(jué)有些奇怪, 不過(guò)以上的需求完成確確實(shí)實(shí)是建立在這個(gè)規(guī)則之上, 所以合理利用這個(gè)默認(rèn)的規(guī)則還是有好處的.

  • 作為主視圖的 ScrollView 必須要遵守一個(gè)手勢(shì)協(xié)議的代理方法, 并返回 YES.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容