2009-07-27 212 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新的运动,然后在计时器线程处理它们。