2

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

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

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

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

4

3 回答 3

1

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

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

于 2013-04-06T14:57:09.010 回答
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 方法中相应地检查它

于 2013-04-06T16:55:22.617 回答
-1

您可以在和轨道UIButton顶部添加相同大小的透明UIImageViewUIControlEventTouchDragOutside

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

于 2013-04-06T15:07:44.877 回答