嵌套視圖的核心是處理滑動(dòng)臨界條件姿搜,協(xié)調(diào)手勢(shì)沖突担锤。
臨界條件比較麻煩不翩,但是不是技術(shù)難點(diǎn)齿诞。
手勢(shì)沖突看這里:http://www.reibang.com/p/88e2b5694765
我只說(shuō)一個(gè)方法:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer衡便;
這個(gè)方法是處理手勢(shì)沖突用的:在需要接收上層手勢(shì)的下層視圖打開(kāi)献起,下層視圖與其點(diǎn)擊區(qū)域的所有子視圖就會(huì)同時(shí)響應(yīng)上層的所有手勢(shì),若關(guān)閉镣陕,則手勢(shì)依然于第一個(gè)響應(yīng)視圖處響應(yīng)而不傳遞谴餐。上層視圖不需要做額外處理。otherGestureRecognizer.view表示傳入手勢(shì)的視圖茁彭,即上層可以響應(yīng)的對(duì)應(yīng)傳入視圖总寒,通過(guò)對(duì)此View的判斷來(lái)決定是否允許此手勢(shì)透?jìng)鳌?/p>
舉個(gè)例子,我的tableView1.Sub->scrollView1,scrollView1.sub->tableView2;
我在tableView1打開(kāi)此方法理肺,所有手勢(shì)允許透?jìng)魃阏ⅲ瑃ableView1、scrollView1妹萨、tableView2會(huì)同時(shí)響應(yīng)他們可以響應(yīng)的手勢(shì)年枕;
此時(shí)在tableView1的此方法處判斷響應(yīng)view為scrollView時(shí)返回false,則對(duì)應(yīng)的橫向手勢(shì)無(wú)法透?jìng)骱跬辏谑谴耸謩?shì)被最上層響應(yīng)視圖吸收熏兄,現(xiàn)象即為只允許單向滑動(dòng)視圖。
個(gè)人觀點(diǎn)树姨,未能系統(tǒng)驗(yàn)證摩桶,如有疏漏,感謝指正帽揪。