iphone - UILongPressGestureRecognizer 开始后的第二次触摸

标签 iphone ipad ios uigesturerecognizer

我正在使用 UILongPressGestureRecognizer,当我使用一根手指时它可以正常工作。当我放下第二根手指时,识别器没有捕捉到,delegate 一直被调用,但只有在第一次触摸时,[recognizer numberOfTouches] 始终为 1。

如果我设置 [recognizer setNumberOfTouchesRequired:2] 它也能正常工作,当我同时放下 2 个手指时,我得到 [recognizer numberOfTouches] = 2。

我的结论是:UILongPressGesture 被识别并开始后,第二次触摸不会改变它。这是预期的行为吗?

最佳答案

您可以添加两个不同的 UILongPressGestureRecognizers,一个设置为 numberOfTouchesRequired = 1,另一个设置为 2。 您可能还希望只有一根手指识别出另一根手指的手指失败(以防用户用一根手指轻敲,然后立即放下另一根手指)。

应该是这样的:

UILongPressGestureRecognizer *oneFingerLongPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerLongPressed:)];
oneFingerLongPressGesture.numberOfTouchesRequired = 1;

UILongPressGestureRecognizer *twoFingersLongPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingersLongPressed:)];
twoFingersLongPressGesture.numberOfTouchesRequired = 2;

[oneFingerLongPressGesture requireGestureRecognizerToFail:twoFingersLongPressGesture];

UIView *someView;

[someView addGestureRecognizer:oneFingerLongPressGesture];
[someView addGestureRecognizer:twoFingersLongPressGesture];

[oneFingerLongPressGesture release];
[twoFingersLongPressGesture release];

关于iphone - UILongPressGestureRecognizer 开始后的第二次触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3584993/

相关文章:

ios - 在 Core Data 商店迁移到新版本时在 iPhone 应用程序的初始屏幕上显示 MBProgressHUD?

ios - Chartboost 插页式 : "not in the window hierarchy!" warning

iphone - 在 App Purchase 沙箱问题

ios - 如何显示一个 ViewController 然后关闭它以显示一个 UISplitViewController?

iphone - iTunes:无法创建应用程序图标

ios - Flutter:AVCapturePhotoOutput' 仅适用于 iOS 10.0 或更新版本

iphone - 如何在 iPhone 的 ImageView 中加载 url 图像

iphone - iOS:下载脚本并执行?

ios - Xcode 9.3.1 - iOS Swift 4.1 UITextView.becomeFirstResponder 线程 1 : EXC_BAD_ACCESS (code=1, 地址=0x4d555458)

ios - Swift 没有激活标签的风格替代品