2016-11-30 42 views
4

所以我最近在我的應用程序中實現了一個集合視圖,並且我收到了一個我似乎無法解決的錯誤,搜索它並沒有看到它的任何線程。UIKit集合視圖,奇怪的行爲(訪問/滾動單元格)

如果我的光標/手指放在單元格上,我無法滾動瀏覽我的集合視圖,我需要選擇一個「空白」區域進行滾動。

我碰到

enter image description here

二奇怪的現象是,我不能直接接觸的細胞。我需要某種滑動手勢來觸發代碼,當一個單元格被選中時。

enter image description here

如果我去我的收藏查看我的故事板,並選擇延遲內容倒是撤銷的內容倒是在滾動視圖部分,集合視圖滾動得很好,但如果我把我的手指/光標在啓用了這些選項的單元格上我無法再訪問任何單元格。

enter image description here

這完全混淆了我。

並感謝您閱讀/考慮此主題。

+0

你有什麼子視圖在您的收藏觀察室? – Frankie

+0

1圖像,1個覆蓋層和1像這樣](https://photos.google.com/share/AF1QipOkIALy0nYjoOSQOBno0DyeYVXIyKPSTX_hcQ2jVuKMCVb-xzi8tOY6FeX21K_RXg?key=cksxVWhRMzBnekp3R0hwMmNrWWxKZGVHeU9KN2lB) –

+0

簡單的方法來解決這個問題。創建示例應用程序。壓縮文件。上傳到github,讓我們檢查它 –

回答

3

讓我們來看看你的兩個屬性是做什麼的。

delaysContentTouches:如果此屬性的值爲true,那麼滾動視圖將延遲處理向下觸摸手勢,直到它可以確定滾動是否爲意圖。如果該值爲false,則滾動視圖會立即調用touchesShouldBegin(_:with:in :)。默認值是true。

canCancelContentTouches如果此屬性的值爲true,並且內容中的視圖已開始跟蹤觸摸它的手指,並且用戶拖動手指足以啓動滾動,則視圖會接收touchesCancelled(_:with :)消息,並且滾動視圖將觸摸處理爲滾動。如果此屬性的值爲false,則一旦內容視圖開始追蹤,無論手指移動如何,滾動視圖都不會滾動。

首先,您將delaysContentTouches設置爲false。因此,scrollview立即調用內容視圖的觸摸處理方法,從而允許它處理觸摸。顯然,即使拖動,滾動視圖也不會立即開始滾動。

其次,您還將canCancelContentTouches設置爲false。但是,如果滾動視圖不允許「接管」內容已經處理的觸摸(通過取消它們),它將永遠無法在稍後開始滾動。因此,如果您的觸摸點擊了內容視圖,滾動視圖將不可能開始滾動:它不允許立即滾動,因爲它不允許延遲內容觸摸,並且無法開始滾動後來因爲無法取消內容觸及。

我不知道你的單元格內發生了什麼,不知道你在那裏放哪些代碼。然而,你應該允許你的tableview延遲觸摸(這意味着你的單元格不會處理因爲它們打算作爲滾動手勢而立即被取消的滑動),並且取消內容觸摸(這意味着當你觸摸向下並且不釋放,在單元格突出顯示後,您仍然可以開始滾動手勢)。

0

我接觸的細胞時有同樣的問題,問題是,我使用一個以上的UIGesture無添加「.cancelsTouchesInView =假」爲每一位

因此,如果您使用的是UIGesture剛添加Your_Gesture.cancelsTouchesInView = false

,你應該能夠訪問你的細胞