触摸移动时如何检测图像视图的触摸结束

时间:2013-04-06 14:34:45

标签: iphone ios uiimageview touches

我有一个图像视图。我在像这样的图像视图中检测到触摸

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
   UITouch *touch = [touches anyObject];
   int viewTag=[touch view].tag;

   if ([[touch view] isKindOfClass:[UIImageView class]])
   {
      //My code
   }
}

和触摸在图像视图上移动。每当我的触摸在特定时间从图像视图中移出时,我需要一个警报视图。如何在触摸移动时检测图像视图中的触摸?...

3 个答案:

答案 0 :(得分:1)

我建议使用UIPanGestureRecognizer并将其添加到要检测的图像视图的更大超视图中。这样,即使触摸在外部开始并移入和移出图像视图,您也可以在手势处理程序中跟踪触摸的移动。

这很简单,例如创建一个名为handlePan:的方法,使用处理程序方法创建手势识别器,将其添加到适当的超级视图中。现在,只要手势处于活动状态并且触摸移动,您的处理程序方法就会被调用,您可以检查它是否在图像视图中。

答案 1 :(得分:0)

您应该使用此方法......

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
   UITouch *touch = [touches anyObject];
   int viewTag=[touch view].tag;

   if ([[touch view] isKindOfClass:[UIImageView class]])
   {
  //My code
   }
   else
   {
      //show the alertView here
   }
}

要检查初始点击是否在imageView上,你必须在touchesBegan方法中设置一个标志...并在touchesMoved方法中相应地检查

答案 2 :(得分:-1)

您可以在UIButton之上添加相同大小的透明UIImageView并跟踪UIControlEventTouchDragOutside

[button addTarget:self action:@selector(draggedOutside:) forControlEvents:UIControlEventTouchDragExit];