禁用 UITextView 的放大镜但启用目标 c 中的链接和电话号码检测

Posted

技术标签:

【中文标题】禁用 UITextView 的放大镜但启用目标 c 中的链接和电话号码检测【英文标题】:Disable magnifying glass of UITextView But enable the Link and phone number detection in objective c 【发布时间】:2016-06-14 19:37:48 【问题描述】:

我在 ios9 中遇到 UITextview 的问题,当我在 textview 上长按时,它会显示放大镜。我尝试通过 UILongPressGestureRecognizer 禁用,它也完全禁用了链接和手机触摸事件。

如何仅禁用放大镜。 textview 将位于 UITableView 单元格中。

【问题讨论】:

【参考方案1】:

UILongPressGestureRecognizer 如果使用 stroyboard 并且如果从代码中将其值设置为 false,则取消选中会取消视图中的触摸

【讨论】:

我仍然通过将属性设置为 false 发现了一个问题。放大镜还是来了。如果我禁用了 UILongPressGestureRecognizer 然后它会禁用电话号码和链接检测。 我得到了答案...我只是减少了UILongPressGesture的延迟量。它解决了我的问题。感谢大家给我宝贵的时间。【参考方案2】:

检查检测链接 取消选中可选,可编辑

【讨论】:

【参考方案3】:

如果我理解正确,您想禁用放大镜,但它是系统调用的。您只能更改 UIMenuController state:hiddenshowUIMenuController 中的 UIMenuItem。像这样

【讨论】:

No........ 菜单工作正常,但我无法禁用放大镜.....【参考方案4】:

我终于自己解决了这个问题。在你的 UITextView 子类中,使用:

- (void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
    // remove magnifying glass, still allowing link detection:
    if ([gestureRecognizer class] == [UILongPressGestureRecognizer class] || [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) 
        [super addGestureRecognizer:gestureRecognizer];
    


- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer 
    // remove magnifying glass, still allowing link detection:
    if ([gestureRecognizer class] == [UILongPressGestureRecognizer class] || [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) 
        return YES;
    
    return NO;

【讨论】:

【参考方案5】:

子类和覆盖手势仅用于轻按手势实现。它还将禁用多个单击手势 UITextTapGestureRecognizer 这是私有的。我猜你不想要多次点击。

override func addGestureRecognizer(_ gestureRecognizer: UIGestureRecognizer) 
    if gestureRecognizer.isKind(of: UITapGestureRecognizer.self) 
        super.addGestureRecognizer(gestureRecognizer)
    


override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool 
    if gestureRecognizer.isKind(of: UITapGestureRecognizer.self)  return true 
    return false

【讨论】:

以上是关于禁用 UITextView 的放大镜但启用目标 c 中的链接和电话号码检测的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 UITextView 中的复制、粘贴选项并再次启用 iPhone 应用程序?

如何在UITextField和UISearchBar中禁用长按手势识别器?

如何在目标 c 中使用步进器缩放 UitextView 中的文本

iOS 5 - 有没有办法在 UITextView 中禁用自动填充但保留拼写检查(红色下划线)?

Swift 4 - 如何使用按钮启用/禁用键盘

以编程方式启用/禁用捏合以放大 WKWebView 和 viewForZoomingInScrollView