Ios 如何根据x,y(触摸移动)查看对象

Ios 如何根据x,y(触摸移动)查看对象,ios,xcode,touchesmoved,uievent,Ios,Xcode,Touchesmoved,Uievent,我想根据XPO和YPO使用以下方法在视图中获取UIImageView(或我拥有的任何内容): - (void) touchesMoved: (NSSet *)touches withEvent:(UIEvent *)event { CGPoint tappedPt = [[touches anyObject] locationInView:viewIndex]; int xPos = tappedPt.x; int yPos = tappedPt.y; NSLo

我想根据XPO和YPO使用以下方法在视图中获取
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
}

非常感谢

如果您知道UIImageView对象的帧,检查点是否位于某个矩形中应该不会太困难


但是,如果您尝试创建UIView的子类,请向其添加一个图像。而不是在上面添加UIImageView对象,并在这个UIView的子类中而不是在UIViewController类中实现touch方法?

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

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

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

我认为没有任何东西可以遍历子层次结构。您可以使用UIView方法减少一点工作量:-

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event

其中event可以是nil,但您仍然必须对每个孩子以及潜在的后代进行该测试。

您的意思是根据这些接触点移动一些视图吗?不,我想知道,每次我移动手指时,(因此我得到x和y)如果有uiimageview或没有,如果有uiimageview,我会得到它并调整它的大小。但我知道有一种最简单的方法可以做到这一点,但找不到方法,这听起来像“对象在此帧存在”感谢回复。当你想起这一点时,别忘了让其他人知道。:)你真的应该这样做!!!没有办法,那更容易
CGRectContainsPoint
已经是您要查找的内容。要检查它是否是UIImageView,只需插入
if([aview iskindof类:[UIImageView类])