2012-01-03 60 views
1

我正在製作書籍應用程序,並使用UIScrollView進行分頁。一切都很順利,但是當我開始編寫拖放圖像的函數時,它不起作用,但代碼在沒有UIScrollView的其他項目中工作。目標C:拖放一個UIScrollView

是否可以在UIScrollView上應用拖放功能?

這裏是我的代碼

image1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1.png"]]; 
    [image1 setFrame:CGRectMake(2834, 225, 150, 184)]; 
    [scrollPaging addSubview:image1]; 

- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event { 
    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInView:self.view]; 

    image1.center = location; 
} 
+0

觸摸事件可能正在被滾動視圖接收。你檢查了嗎? – 2012-01-03 10:33:16

回答

0

當你檢測到你正在開始拖動一個項目(我使用延遲選擇器來確定一個開始拖動操作),並在釋放觸摸後重新啓用滾動時,關閉滾動視圖的滾動功能。

要禁用滾動使用...

[scrollView setScrollEnabled:FALSE]; 
+0

我有同樣的問題,他和我也使用setScrollEnabled,但我認爲我做錯了。我也發佈了一個問題,這裏是http://stackoverflow.com/questions/8723178/objective-c-stop-scrolling- on-touch/8723232#8723232 – Cristiano 2012-01-04 07:18:04

0

儘量延緩使用canCancelContentTouches財產觸摸或嘗試繼承每個單獨的圖像中作爲一個單獨的視圖和執行觸動了所有的人都一起在這個類。

+0

當子類化一個UIView並使用touchesMoved等時,這不起作用,scrollview將它解釋爲一個正常的滾動事件。訣竅是在檢測到您正在拖動項目時禁用滾動視圖上的滾動。 – 2012-01-03 10:45:14

-1

我使用UILongPressGestureRecognizer和它在視圖控制器滾動視圖是內部UIGestureRecognizerStateEnded。

+0

他沒有使用手勢識別器,回答原始問題,並且在他們比你自己更有效時,不會降低相互競爭的答案。 – 2012-01-03 16:52:50

+0

他沒有說過他只想使用touchesMoved。他會更好地使用手勢識別器。你的回答,如果不是一個好的一個恕我直言。 – ader 2012-01-03 16:55:22

+0

隨意提出替代方案,但請不要採取全面壓低其他答案來嘗試確保聲譽,這不是一種好的做法。 – 2012-01-03 16:57:59