UITapGestureRecognizer和touchesBegan用于相同的视图

时间:2014-12-01 06:15:54

标签: ios objective-c uiview uitapgesturerecognizer touchesbegan

我希望在视图中显示UITapGestureRecognizer,在其子视图中显示touchesBegan,但问题是在识别UITapGestureRecognizertouchesBegan未被调用。

这样做好吗?或者我应该采取另一种方法吗?

修改:已解决。设置UITapGestureRecognizer的cancelsTouchesInView属性对我来说很有用。默认情况下,它为false,因此不会调用touchesBegan

1 个答案:

答案 0 :(得分:-2)

请找出你错在哪里, 这是关于如何在班级中实现手势识别器的分步指南:

  1. 使您的班级符合UIGestureRecognizerDelegate协议。

  2. 实例化手势识别器。例如,要实例化UITapGestureRecognizer,我们将执行:

    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)];
    

    这里,action是处理手势的选择器。在这里,我们的选择器handleTapFrom看起来像:

    - (void) handleTapFrom: (UITapGestureRecognizer *)recognizer
    {
        //Code to handle the gesture
    }
    

    选择器的参数是手势识别器。我们可以使用此手势识别器来访问其属性,例如,我们可以找到手势识别器的状态,例如UIGestureRecognizerStateBeganUIGestureRecognizerStateEnded等。

  3. 在实例化的手势识别器上设置所需的属性。例如,对于UITapGestureRecognizer,我们可以设置属性numberOfTapsRequirednumberOfTouchesRequired

  4. 将手势识别器添加到要检测手势的视图中。在我们的示例代码中(我将分享该代码供您参考),我们将使用以下代码行向imageView添加手势识别器:

    [self.imageView addGestureRecognizer:tapGestureRecognizer];
    
  5. 将手势识别器添加到视图后,设置手势识别器的委托,即将处理所有手势识别器内容的类。在我们的示例代码中,它将是:

    tapGestureRecognizer.delegate = self;
    

    注意:在向视图添加手势识别器后分配代理。否则,将不会调用action方法。