如何根据x,y在视图中获取对象(touchesMoved)

时间:2012-07-24 07:47:42

标签: ios xcode touchesmoved uievent

我希望使用此方法根据xPos和yPos获取视图中的UIImageView(或我拥有的任何内容):

- (void) touchesMoved: (NSSet *)touches withEvent:(UIEvent *)event {
  CGPoint tappedPt = [[touches anyObject] locationInView:viewIndex];
  int     xPos = tappedPt.x;
  int     yPos = tappedPt.y;

  NSLog(@"xPos %i yPos %i ", xPos, yPos);


  // do something with xPos and yPos like add them to an array
}

非常感谢!

3 个答案:

答案 0 :(得分:0)

如果你知道UIImageView对象的框架,那么检查一个点是否在某个矩形中是不是很困难。

但是你尝试过创建UIView的子类,向它添加一个图像。那个类对象在你上面而不是在它上面添加一个UIImageView对象,并在这个UIView的子类而不是你的UIViewController类中实现touches方法?

答案 1 :(得分:0)

我认为没有任何东西可以通过子层次结构。你可以使用UIView方法减少一些工作: -

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
事件可以是零,但你仍然需要对每个孩子进行测试,并且可能是后代。

答案 2 :(得分:-1)

您可以获取主视图的所有子视图。然后确定是否在子视图中触摸点。

for(UIView *aView in [self subviews])
{
    if(CGRectContainsPoint(aView.frame, tappedPt))
    {
        return aView;
    }
}

但它有问题。如果许多子视图重叠,则只能获取视图。您可以修改代码以获取视图数组。