我希望在视图中显示UITapGestureRecognizer
,在其子视图中显示touchesBegan
,但问题是在识别UITapGestureRecognizer
时touchesBegan
未被调用。
这样做好吗?或者我应该采取另一种方法吗?
修改:已解决。设置UITapGestureRecognizer
的cancelsTouchesInView属性对我来说很有用。默认情况下,它为false,因此不会调用touchesBegan
。
答案 0 :(得分:-2)
请找出你错在哪里, 这是关于如何在班级中实现手势识别器的分步指南:
使您的班级符合UIGestureRecognizerDelegate
协议。
实例化手势识别器。例如,要实例化UITapGestureRecognizer
,我们将执行:
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)];
这里,action是处理手势的选择器。在这里,我们的选择器handleTapFrom看起来像:
- (void) handleTapFrom: (UITapGestureRecognizer *)recognizer
{
//Code to handle the gesture
}
选择器的参数是手势识别器。我们可以使用此手势识别器来访问其属性,例如,我们可以找到手势识别器的状态,例如UIGestureRecognizerStateBegan
,UIGestureRecognizerStateEnded
等。
在实例化的手势识别器上设置所需的属性。例如,对于UITapGestureRecognizer
,我们可以设置属性numberOfTapsRequired
和numberOfTouchesRequired
。
将手势识别器添加到要检测手势的视图中。在我们的示例代码中(我将分享该代码供您参考),我们将使用以下代码行向imageView添加手势识别器:
[self.imageView addGestureRecognizer:tapGestureRecognizer];
将手势识别器添加到视图后,设置手势识别器的委托,即将处理所有手势识别器内容的类。在我们的示例代码中,它将是:
tapGestureRecognizer.delegate = self;
注意:在向视图添加手势识别器后分配代理。否则,将不会调用action方法。