2012-11-24 28 views
2

我一直在尋找所有其他類似的主題,使用UIGestureRecognizers,使用hitTest:withEvent,pointInside:withEvent:等等,但沒有什麼似乎是我需要實現的東西。傳播拖動觸摸到UIScrollView超級視圖

基本上我有一個主視圖(一個普通的UIViewController的self.view)和一個小的矩形UIScrollView附加在它的底部:scrollView充滿了一些UIImageViews,用戶可以像平常一樣滾動它。

但用戶也應該能夠從UIScrollView拖動一個UIImageView(或它的一個副本)到主視圖,而這正是我發現真的很困難,用同樣的拖動手勢,因此我需要一種方式:

1)區分正常的水平滾動手勢,應該由UIScrollView以通常的方式處理,並在圖像視圖上拖動手勢。

2)一旦識別到拖動手勢,應該將觸摸傳播到超級視圖,它將託管UIImageView的副本並使用同一拖動手勢繼續拖動主視圖,甚至超出UIScrollView的界限。

請注意,我知道如果UIScrollView的userInteractionEnabled = NO觸摸傳播到子視圖,但1)我想傳播它到超級視圖而不是子視圖,2)userInteractionEnabled屬性顯然成爲活動只有一次初始手勢終止,而我需要使用一個單一的拖動手勢。

非常感謝您的幫助。

+0

您必須禁用默認啓用的delayContentTouches,這是一回事。 – nhahtdh

+0

您的意思是允許userInteractionEnabled = NO立即變爲活動狀態?這是很好的知道,並不能解決整個問題,但可能會有所幫助,非常感謝你。 –

+0

我沒有提及任何有關'userInteractionEnabled = NO'的信息,實際上應該是'YES'。至於拖動,當您的檢測平移手勢已經啓動時,您將創建或重新定位該對象到超級視圖以進行拖動;當檢測到手勢結束時,您將其放入具有適當座標的相應子視圖中。 – nhahtdh

回答

2

所以,到目前爲止,我已經結束了實施我的UIScrollView的子類的touchesShouldBegin:withEvent:inContentView:方法,但與delayContentTouches設置爲YES(默認值),而不是作爲NO被@nhahtdh建議。

奇怪的是,即使只實現該方法足以讓我的子視圖攔截拖動,而且我的scrollview仍然正常滾動,而delayContentTouches設置爲NO,我無法滾動它,因爲所有子視圖都開始移動周圍。

真的,這是@nhahtdh,所以男人,如果你發佈的答案我會接受它,非常感謝你的幫助。