Objective c CGRectContainsPoint()不是';即使rect包含点,也不会返回TRUE?

Objective c CGRectContainsPoint()不是';即使rect包含点,也不会返回TRUE?,objective-c,tracking,uitouch,cgrect,Objective C,Tracking,Uitouch,Cgrect,我有一个UIView,里面有一个UIImageView。当有人试图拖动图像视图时,图像视图应跟随该人的手指。下面是UIView类中的代码 - (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { CGPoint touchPoint = [touch locationInView:self]; if ( CGRectContainsPoint(self.thumb.frame, t

我有一个UIView,里面有一个UIImageView。当有人试图拖动图像视图时,图像视图应跟随该人的手指。下面是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()不工作

CGPoint touchPoint = [touch locationInView:self.view];
self
不是视图(通常),而是视图控制器

UITouch *touch = [[[event allTouches] allObjects] objectAtIndex:0];
请注意,还假定self.view是self.thumb的超级视图。如果不是,一般来说,您可以使用:

CGPoint touchPoint = [touch locationInView:[self.thumb superview]];

触摸是如何定义的? 虽然self是一个ViewController,但我一直在使用以下内容(在标准的touchsbegind或touchsmoved中)

UITouch *touch = [[[event allTouches] allObjects] objectAtIndex:0];

但在这种情况下,self是一个UIView。(self.view没有编译)。图像视图已经是UIView的一个子视图,所以[self.thumb superview]也没有做任何事情……self.thumb是
self
的直接子视图吗?我实际上解决了问题:我将userInteractionEnabled设置为YES,这不允许触摸事件到达视图。抱歉,我本想删除这篇文章,但我一定是忽略了它。@Mahir您将
userInteractionEnabled
设置为
NO
?@Mahir抱歉,我是说
YES
:)