我搜索了其他几个问题和教程,但找不到我的问题的答案。我想检测用户是否触摸/点击/按住/单击屏幕。我尝试使用 touchesBegan: withEvent:
但它没有触发任何事件。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if ([touch view] == mapView_) {
NSLog(@"Touches began");
} else NSLog(@"Touches began");
是否有另一种通过触摸屏幕来检测用户交互的方法?
最佳答案
你必须使用 UITapGestureRecognizer。
使您的类符合 UIGestureRecognizerDelegate
协议(protocol)。
实例化手势识别器。例如,要实例化 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。
将手势识别器添加到您要为其检测手势的 View 。在我们的示例代码中(我将分享该代码供您引用),我们将使用以下代码行将手势识别器添加到 imageView:
[self.imageView addGestureRecognizer:tapGestureRecognizer];
将手势识别器添加到 View 后,设置手势识别器的委托(delegate),即处理所有手势识别器内容的类。在我们的示例代码中,它会是这样的:
tapGestureRecognizer.delegate = self;
注意:在将手势识别器添加到 View 后分配委托(delegate)。否则,不会调用操作方法。
引用 - Here
关于ios - 检测用户是否触摸了 iOS 上的屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22966667/