2012-02-16 62 views
1

我會盡量保持簡單。UIScrollview,向下移動應答鏈

我有一個UIScrollview附帶10個左右的圖像。我現在擁有它,以便我可以觸摸圖像並在滾動視圖上拖動它。

我通過創建子類UIImageview和實現touchesMoved等來實現這一點。我仍然可以很好地滾動視圖,但是當試圖拖動圖像過快時會出現問題。看起來程序首先檢查視圖是否正在滾動,然後觸發UIImage類中的touchesMoved。

是否有反正我可以切換這個,這樣的第一個檢查是如果一個圖像被觸摸,然後如果不傳遞給滾動視圖的響應。

任何幫助將是偉大的。謝謝。

回答

1

最簡單的方法是用一根手指移動圖像,用兩根手指滾動視圖。

如果你在iOS 5,這是超級簡單:

self.scrollView.panGestureRecognizer.minimumNumberOfTouches = 2; 

如果你想支持舊版iOS,你必須做一些更多的工作:

for (UIGestureRecognizer *gesture in self.scrollView.gestureRecognizers){ 
    if ([gesture isKindOfClass:[UIPanGestureRecognizer class]]){ 
    ((UIPanGestureRecognizer *)gesture).minimumNumberOfTouches = 2; 
    } 
} 

如果你想爲兩者使用單指手勢,有幾種方法可以做到這一點。您可以將UIPanGestureRecognizer附加到每個圖像視圖。您可能需要使用requireGestureRecognizerToFail:消息來告訴滾動視圖自己的UIPanGestureRecognizer才能使用圖像視圖識別器。

另一種方法是將滾動視圖的UIPanGestureRecognizer的委託設置爲您創建的實現gestureRecognizer:shouldReceiveTouch:方法的對象。在該方法中,您可以檢查觸摸的視圖是否是您的圖像視圖之一。如果是,則返回NO以防止滾動視圖的平移手勢識別器激活。

+0

非常感謝! – 2012-02-17 09:14:48

0

你的問題對我有點困惑,但我會假設你有一個UIScrollView,裏面有10個UIImageViews,你想拖動它。

我的建議是使用連接到每個UIIImageView的手勢識別器(UIPanGestureRecognizer)來實現拖動行爲。我發現手勢識別器對這種行爲更加堅實。

如果你不知道如何使用手勢識別器,我可以發佈一個簡短的代碼示例來演示如何拖動任何類型的UIView。只需在評論中提問,我就會寫出來。