2010-08-06 69 views
11

我有一個UITableView這是UIView的子視圖,那麼UIViewUIScrollView的子視圖。如何檢測應該滾動UITableView的觸摸?在UIScrollView中滾動UITableView

UITableView可以得到項目選擇事件(表格中的一個單元格被選中/點擊)就好了,除了在單元格被觸發前不得不按住單元格。但我無法滾動UITableView,它總是對平移手勢做出反應的UIScrollView

任何幫助,非常感謝。提前致謝!

編輯: 解決了,雖然我問了錯誤的問題。它在羅馬K指出的默認情況下工作。我認爲問題與的一部分在UIScrollView的範圍之外有關(UITableView超過UIScrollView的底部範圍)。將其設置爲正確安裝在UIScrollView內部。

+0

我想建議這個答案 http://stackoverflow.com/questions/3422915/scrolling-a-uitableview-inside-a-uiscrollview/32486714#32486714 – 2015-09-09 18:27:33

回答

17

請確保UIScrollView's屬性delaysContentTouchescanCancelContentTouches設置得當。它們控制UIScrollView實例如何將觸摸信息傳遞給子視圖。默認delaysContentTouches設置爲YES。此外,請確保,如果您擴展UIScrollView,則允許在子視圖中觸摸touchesShouldBegin:withEvent:inContentView:

否則,UITableView滾動應該在您的方案中默認工作。如果您使用所描述的視圖層次結構創建測試項目,您將看到它是這種情況。所以,比較兩者,看看有什麼區別影響滾動。

+1

我相信我設置delaysContentTouches(設置爲YES)和canCancelContentTouches(設置爲NO)就好了。我能夠在UITableView中輕鬆點擊,但不能輕掃和平移。 – Altealice 2010-08-07 08:18:48

+0

謝謝。這已經很痛苦了。 – thedp 2013-10-25 14:31:43

+3

我認爲這個邏輯在iOS8中被破壞了。看起來UIScrollView會攔截垂直滾動手勢,而不會忽略它們。我發佈了一個關於它的新問題 - http://stackoverflow.com/questions/25558630/uiscrollview-behavior-is-different-in-ios8 – sha 2014-08-28 22:15:01