Objective c CGRectContainsPoint()不是';即使rect包含点,也不会返回TRUE?
我有一个UIView,里面有一个UIImageView。当有人试图拖动图像视图时,图像视图应跟随该人的手指。下面是UIView类中的代码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
- (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
:)