2015-02-06 66 views
2

我有一個UITableView,我想自然滾動自己。不過,我也有自己的手勢識別器,它也被同時識別(通過返回YESgestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:)。暫時禁用一個手勢識別器,而另一個正在觸發

在我的手勢處理程序計算出某個點後,我想暫時停止表視圖處理其自身基礎手勢的手勢變化。這是因爲此時我正在調整表格視圖的大小,並且在發生這種情況時我不希望它滾動(但仍然滾動到調整大小時開始生效的位置)。

我試過在gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:中錄製另一個手勢識別器,它似乎確定了正確的那個,因爲它顯示爲UIScrollViewPanGestureRecognizer。然而,我對自己的處理程序中的識別器沒有任何影響。

有人會認爲設置otherRecognizer.enabled = NO應該做的伎倆,但它沒有任何效果。

也許表視圖在我之前接收到它的手勢事件,因此在那時禁用它並不會產生任何效果,但即使如此,您仍會認爲它會在下一個更改事件中被禁用,但事實並非如此。

我很難過。如何在不完全取消手勢的情況下暫時阻止來自接收/處理手勢的表格視圖?

更新:

當我登錄otherRecognizer,它顯示爲UIScrollViewPanGestureRecognizer類型的對象,但是它的狀態是Failed。我也注意到,實際上有很多撥打gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:(即使是多個UIScrollViewPanGestureRecognizer),所以也許我只是記錄和禁用錯誤的一個......但是我怎麼知道我想要的是哪一個呢?

更新2:

如果我設置tableView.panGestureRecognizer.enabled = NO在我自己的手勢處理機內適當的時候,它讓我的一半也-表不再滾動一旦我開始調整其大小。但是,將其重新設置爲啓用不會重新激活該手勢,並且不再處理任何進一步滾動,直到新手勢開始。

更新3:

我結束了「解決」這種通過手動調整滾動視圖的內容的手勢期間偏移。它似乎工作正常,但我仍然對真正的答案感到好奇。

回答

1

UITableView是一個UIScrollView。 UIScrollView具有panGestureRecognizer屬性。這是手勢識別器,它響應用戶在桌面視圖上移動手指。

但是,這與您在調整表格視圖大小時滾動位置的變化無關。用戶沒有做任何事 - 你是。所以沒有任何姿態,也沒有什麼可以認出的。如果你想控制滾動視圖正在做什麼,你需要直接控制它。您可以使用UITableView方法,UIScrollView方法和UIScrollView委託。

如果沒有更清晰的問題陳述,很難提供進一步的建議,但在我看來,回答質疑確實問的是您正在吠叫錯誤的樹。但也許不是;也許你手勢調整表視圖的大小,你沒有在問題中明確這一點?在這種情況下,請嘗試禁用panGestureRecognizer。或者,更好的是,暫時關閉表格視圖的所有用戶交互並在其他地方檢測此手勢。

+0

調整大小,我手動在我自己的手勢處理程序。基本上,當用戶在其外滾動時,表格視圖會調整大小。但問題是,它正在調整它*保持滾動*。由於表格視圖位於窗口的底部並且正在向上調整大小,因此表格不再顯示爲遵循手指,而是滾動兩倍的速度。 – devios1 2015-02-06 01:46:44

+0

表視圖的'panGestureRecognizer'屬性是朝正確方向邁出的一步 - 感謝!看到我的更新2。 – devios1 2015-02-06 01:49:43