即使rect包含点,CGRectContainsPoint()也不返回TRUE?

时间:2011-11-15 05:28:44

标签: objective-c tracking uitouch cgrect

我有一个带有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()不起作用?

2 个答案:

答案 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];