Objective-C:如何检测视图上的双击?

33

我正在开发一个应用程序,视图上有多个控件,但我想在用户双击视图时启用它们。

您可以以双击为例,但是在设备上,我想捕获双击事件。

2个回答

78

您需要向想要被点击的视图添加一个UITapGestureRecognizer

就像这样:

- (void)viewDidLoad {
    [super viewDidLoad];

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)];
    tapGesture.numberOfTapsRequired = 2;
    [self.view addGestureRecognizer:tapGesture];
    [tapGesture release];
}

- (void)handleTapGesture:(UITapGestureRecognizer *)sender {
    if (sender.state == UIGestureRecognizerStateRecognized) {
        // handling code
    }
}

6
如果存在多个手势识别器,您可以通过使用以下代码来确保“高优先级”的双击手势识别器:[self.view.tapGestureRecognizer requireGestureRecognizerToFail:self.doubleTapGestureRecognizer];注意不要改变原意。 - Jerry Tian
2
请不要忘记将 <UIGestureRecognizerDelegate> 添加到您的类私有接口中...@interface IBMYourClassName ()<UIGestureRecognizerDelegate> - MB_iOSDeveloper

8

UITapGestureRecognizer添加到视图中,其中numberOfTapsRequired = 2


UITapGestureRecognizer是一个控件吗?它不在控件库中。 - Azhar
这是一个UIGestureRecognizer子类。你需要用代码来编写它。 - Benjamin Mayo
我使用选择器和UIAlert编写了这段代码,但它无法正常工作。
  • (void)viewDidLoad { UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)]; tapGesture.numberOfTapsRequired = 2; [tapGesture release];
}
- Azhar
你是否使用 addGestureRecognizer: 将它添加到视图中了? - Morrowless

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接