Objective c 限制触摸移动的对象不与墙碰撞?

Objective c 限制触摸移动的对象不与墙碰撞?,objective-c,collision,touchesmoved,Objective C,Collision,Touchesmoved,我试图创建一个非常简单的游戏,你可以拖动一个简单的图像视图。问题是,框架中有一面墙,只是一个矩形,图像不应该出现在上面。所以我做了这样的事情: - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [[event allTouches] anyObject]; if ([touch view] == myImage) { if (CGRectContainsRect

我试图创建一个非常简单的游戏,你可以拖动一个简单的图像视图。问题是,框架中有一面墙,只是一个矩形,图像不应该出现在上面。所以我做了这样的事情:

    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
 UITouch *touch = [[event allTouches] anyObject];
 if ([touch view] == myImage) {
  if (CGRectContainsRect (CGRectMake(0, 0, 800, 768), [myImage frame]))
  {
   myImage.center = [touch locationInView:self.view];
  }
 }
}
但问题是,图像确实超出了它的界限,然后被卡在那里,触摸移动结束了

因此,我添加了以下内容:

    else if (CGRectIntersectsRect (CGRectMake(801, 0, 223, 768), [myImage frame])) {
   CGPoint touchedPoint = [touch locationInView:self.view];
   myImage.center = CGPointMake(730, touchedPoint.y); 

  }
但这使得图像在与墙相交时开始闪烁,最终也卡在了墙上

我觉得必须有一个简单的方法来做到这一点。谁能给我点化一下吗?

好的,我发现了我的错误

我必须这样做:

if (CGRectContainsPoint (CGRectMake(0, 0, 800, 768), [touch locationInView:self.view]))
与此相反:

if (CGRectContainsRect (CGRectMake(0, 0, 800, 768), [myImage frame]))
是啊,真傻