在 UITextView 中禁用双击

Posted

技术标签:

【中文标题】在 UITextView 中禁用双击【英文标题】:Disable double tap in UITextView 【发布时间】:2013-06-30 09:14:08 【问题描述】:

我想。我已经禁用了长按:

- (void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
    if ([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]]) 
        gestureRecognizer.enabled = NO;
    
    [super addGestureRecognizer:gestureRecognizer];
    return;

我已经尝试对 UITapGestureRecognizer 做同样的事情,但它也禁止单击。

- (void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
    if ([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]]) 
        gestureRecognizer.enabled = NO;
    
    if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) 
        gestureRecognizer.enabled = NO;
    
    [super addGestureRecognizer:gestureRecognizer];
    return;

我能做些什么来禁用只双击?

我知道 numberOfTapsRequired 方法,但不知道如何在我的代码中准确应用它。

【问题讨论】:

【参考方案1】:

我建议你试试这个,而不是禁用你的点击手势识别器

if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) 
    [(UITapGestureRecognizer *)gestureRecognizer setNumberOfTapsRequired:1];

通过这种方式,您应该启用单击并禁用双击。

【讨论】:

我试过了。在 'UIGestureRecognizer *' 类型的对象上找不到“属性 'numberOfTapsRequired'。 好的,那是因为缺少对UITapGestureRecognizerUITapGestureRecognizer 子类)的向下转换...我编辑了我的答案,现在它可以工作了 这正是我所需要的。谢谢。【参考方案2】:

numberOfTapsRequired 的默认值为 1,设置为 2。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITapGestureRecognizer_Class/Reference/Reference.html

【讨论】:

我知道。如果我这样做,结果将是相同的(将被阻止所有水龙头)。我需要类似:“if (doubleTap) >>> gestureRecognizer.enabled = NO;” 您是否为两次点击创建了一个手势识别器,而一个动作什么都不做? 是的,那没用。但我不确定,这样做是否正确。

以上是关于在 UITextView 中禁用双击的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 11 中禁用 UITextView 中的拖动

UITextView带有可点击链接但没有文字突出显示

如何将双击手势添加到 UITextView

在 UITextView 中禁用复制功能不起作用

模仿 UITextView 的默认双击行为

双击 uitextview