禁用 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:hidden
或 show
和 UIMenuController
中的 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 中的文本