【问题标题】:Separate the Tap Event from the ImageView将 Tap 事件与 ImageView 分开
【发布时间】:2012-08-30 10:43:33
【问题描述】:

我有一个使用 TapGestureRecognizer 的视图。我将 TapGestureRecognizer 用于单击和双击事件。到现在为止还挺好。现在我在 View 的顶部添加了一个 ImageView ,图像视图框架是imageView.frame=CGRectMake(50,290,205,100);

现在无论我在哪里点击 View ,我的 @selectors 都会被调用。我只想跳过 ImageView 的点击事件。怎么办?

我尝试过使用

if(recognizer.state == UIGestureRecognizerStateRecognized)
{
    CGPoint point = [recognizer locationInView:recognizer.view];
}

【问题讨论】:

    标签: iphone objective-c cocoa-touch uiview uitapgesturerecognizer


    【解决方案1】:

    您必须执行此检查

    if(!CGRectContainsPoint(image.view.frame, point))
      {
         //Complete your Work
       }
    

    【讨论】:

      【解决方案2】:

      这样做...希望对您有所帮助...

      每当您点击屏幕时,此委托方法都会调用..

      在这种方法中,请检查触摸和手势识别器将提供一些关于您的点击的数据..... 基于此,您可以继续......

      - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
      {
          NSLog(@"%@",touch.description);
          NSLog(@"%@",gestureRecognizer.description);
      }
      

      【讨论】:

        【解决方案3】:

        你需要检查接触点,

        if(!CGRectContainsPoint(image.view.frame, point))
           {
              //Do you work here
            }
        

        【讨论】:

          【解决方案4】:

          这样做:

          if(recognizer.state == UIGestureRecognizerStateRecognized)
          {
              CGPoint point = [recognizer locationInView:recognizer.view];
              if(CGRectContainsPoint(imageView.frame,point)
              {
                 //igonre
              }
              else
              {
                // continue
              }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-03-01
            • 1970-01-01
            相关资源
            最近更新 更多