2009-07-27 109 views
5

我想拖動一個UIImageView在我的應用程序的iPhone屏幕周圍。iPhone SDK:無法拖動UIImageView

目前我設置的拖動功能很好,並拖動圖像確實將其移動到屏幕上,麻煩的是,您不必拖動圖像視圖來移動它,也可以拖動屏幕,它會移動圖像。 我是這個平臺的新手,所以我無法真正考慮如何解決此問題。 我當前的代碼拖動圖像是:

- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { 
    CGPoint pt = [[touches anyObject] locationInView:pig]; 
    startLocation = pt; 


} 
- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event { 
    CGPoint pt = [[touches anyObject] locationInView:pig]; 
    CGRect frame = [pig frame]; 
    frame.origin.x += pt.x - startLocation.x; 
    frame.origin.y += pt.y - startLocation.y; 
    [pig setFrame: frame]; 
} 

任何幫助表示讚賞。順便說一句,豬是UIImageView。 另外我也注意到,如果我設置圖像視圖「豬」的用戶交互啓用圖像不再拖動能力,但是當它沒有設置爲啓用它是。

回答

0

您可以嘗試繼承UIImageView並直接實現touchesBegan:touchesMoved:。然後在InterfaceBuilder中爲UIImageView選擇你的子類。

alt text http://img.skitch.com/20090728-xetretcfubtcj7ujh1yc8165wj.jpg

哦,是的,現在你需要重新設置用戶交互...

+0

非常感謝你,這完美的技巧! – Sam 2009-07-28 10:35:39

+0

self.userInteractionEnabled = YES; ...它總是一樣的,總是我做錯了! Thanx epatel,偉大的:-) – 2012-04-24 08:40:39

0

你需要它括在開始/提交至少動畫序列中的計時器線程:

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.02] /* 0.02 seconds suration*/ 

/* move pig coordinates here */ 

[UIView commitAnimations]; 

保存在touchesMoved新的運動,然後在計時器線程處理它們。