如何解决UITextView dataDetectorTypes 不检测 isSelectable 是否设置为 falseUITextView:禁用选择,允许链接
编辑 2
阅读UITextView: Disable selection,allow links的所有答案后,设置textView.selectedTextRange = nil
似乎是安全的。所以我投票结束了这个问题。如果 textView.selectedTextRange = nil
有一些基本问题,请告诉我。
编辑:
我刚刚发现了这个问题 UITextView: Disable selection,allow links。其中的评论链接到另一个问题 UITextView disabling text selection,其中基于 @Ted 的回答,这是有效的:
extension YourViewController: UITextViewDelegate {
func textViewDidChangeSelection(_ textView: UITextView) {
view.endEditing(true)
}
}
但用户评论说,对于 iOS13 这不起作用,需要调用 textView.selectedTextRange = nil
。我目前正在将 selectedTextRange
设置为 nil
并且事情似乎按预期工作。但我的应用程序支持 iOS 11。另外,我认为 view.endEditing 不适用于我的情况,因为无法访问视图控制器视图。
对于其他问题,投票最高、被接受的答案似乎很挑剔,因为弄乱了 point(inside point: CGPoint,with event: UIEvent?)
并且具有双击仍然可以选择的缺点。
所以我想要一种可靠且经过测试的方法来启用链接禁用选择。我提到的问题来自 2016 年。所以我正在寻找一种更可靠的方法来为 iOS 11 - 14 处理这个问题。
在我的表格视图单元格中,我有一个文本视图。我希望突出显示链接、电话号码和电子邮件地址。但我不希望用户能够拖动和选择单个文本。所以我设置了 .isSelectable = false
和 .dataDetectorTypes = .all
。但是此设置无法识别链接。只有当我设置 .isSelectable = true
时,链接才会被检测到。如何防止选择但仍使链接可检测和可点击? (我添加了 separate row action 来复制文本)
messageLabel.isSelectable = true
messageLabel.dataDetectorTypes = .all
messageLabel.isSelectable = false
messageLabel.dataDetectorTypes = .all
messageBubble.addSubview(messageLabel)
messageLabel.translatesAutoresizingMaskIntoConstraints = false
messageLabel.isEditable = false
messageLabel.isSelectable = false
messageLabel.dataDetectorTypes = .all
messageLabel.textContainer.lineBreakMode = .byWordWrapping
messageLabel.isScrollEnabled = false
messageLabel.backgroundColor = .clear
//messageLabel.isUserInteractionEnabled = true
messageLabel.font = getFont(name: .HelveticaNeue,size: .medium)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。