2016-03-24 75 views
0

我想在UITableViewCell的內部放置自定義視圖(從nib創建)。這沒有問題,除非自定義視圖聲明它是自己的單一觸摸UIPanrecognizer。在這些情況下,我的自定義視圖會響應泛事件,但這幾乎禁用了滾動表視圖內單元格的功能。我試着用單元格和自定義視圖註冊UIPanRecognizer,但是從iOS 9開始,這種能力似乎不再允許(看起來這也不是蘋果想要觸摸事件被處理的方式,我在某處閱讀觸摸事件應該只是由一個視圖處理)使用UIPanrecognizer的自定義視圖無意中鎖定了UITableViewController

我也未能找到一種方式來滾動表格視圖以編程方式,這也似乎有點hacky。

當我想要保留UITableView的泛行爲,同時仍能夠響應自定義視圖內的泛事件時,我有什麼選擇?

我的用例如下:我想重用一個自定義視圖,可以橫向滾動我創建的應用程序的另一部分。我的表格視圖被設置爲僅對向下的平底鍋作出反應。因此這兩個平移操作不會產生干擾。

我現在解決了這個問題的兩種方法如下: 橫向卷軸反應爲雙指盤。這是非常尷尬和不直觀的。

自定義視圖上的所有手勢(水龍頭除外)都會發送到其超級視圖。點擊自定義視圖將禁用重新路由,這將鎖定桌面視圖並通過讓自定義視圖對橫向平移作出反應來啓用橫向滾動。另一個水龍頭恢復最初的行爲。這很尷尬,因爲它要求用戶執行三個單獨的操作,以便應該只是一個。

我知道我可以爲表格視圖啓用橫向平移,但這並不能解決我想要在單元格內重新使用自定義視圖的問題。

有沒有人知道解決這個困境?

回答

0

解決方案是創建一個自定義UIGestureRecognizer

我跟着this tutorial,創建自定義SidewaysPanGestureRecognizer,註冊的,而不是由實施UIGestureRecognizerDelegate方法負責決定如果視圖應該處理的姿態通過了所有的手勢,但SidewaysPanGestureRecognizer到上海華:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, 
    shouldReceiveTouch touch: UITouch) -> Bool { 
    return gestureRecognizer is SidewaysPanGestureRecognizer 
} 
相關問題