ios - 检测用户是否触摸了 iOS 上的屏幕

标签 ios cocoa-touch

我搜索了其他几个问题和教程,但找不到我的问题的答案。我想检测用户是否触摸/点击/按住/单击屏幕。我尝试使用 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/

相关文章:

ios - block 对象会导致保留周期吗?

ios - 不断询问 iTunes Sandbox 帐户凭据

ios - Swift:将 Facebook 用户与不在 Parse Server 上工作的现有 PFUser 链接

iOS 8 启动图像文件 - 导航栏和状态栏

iphone - 手机的当前 IP 地址,无论是通过 WiFi 还是 3G 连接

ios - 制作 NSURLSessionTask 队列的最佳实践

ios - Lipo 从终端工作,但来自 bash 脚本的权限被拒绝

ios - 为什么使用 dequeueReusableCellWithIdentifier 时帧总是一样? ( cocoa touch )

iphone - 在 Xcode 中使用下一个和上一个按钮创建图像数组

ios - Swift - SecondViewController 到 FirstViewController : fatal error: unexpectedly found nil