我有一个带有UIImageView的UIView。当有人试图拖动图像视图时,图像视图应该跟随人的手指。以下是UIView课程的代码。
- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
CGPoint touchPoint = [touch locationInView:self];
if ( CGRectContainsPoint(self.thumb.frame, touchPoint))
self.thumb.center = CGPointMake(touchPoint.x, self.thumb.center.y);
return YES;
}
当我通过将手指放在imageView上并尝试移动它来开始跟踪时,没有任何反应。从NSLogging,我发现if语句永远不会满足。
但是,当我开始在imageView外部进行跟踪并将手指拖到imageView时,图像视图将跟随我的手指。
当我的手指在图像视图上开始时,为什么CGRectContainsPoint()不起作用?
答案 0 :(得分:2)
CGPoint touchPoint = [touch locationInView:self.view];
self
不是视图(通常),它是视图控制器。
请注意,假设self.view是self.thumb的超级视图。如果没有,更一般地说,你可以使用:
CGPoint touchPoint = [touch locationInView:[self.thumb superview]];
答案 1 :(得分:0)
如何定义触摸? 我一直在使用以下(在标准touchesBegan或touchesMoved中),虽然self是一个ViewController。
UITouch *touch = [[[event allTouches] allObjects] objectAtIndex:0];