微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UITextView dataDetectorTypes 不检测 isSelectable 是否设置为 falseUITextView:禁用选择,允许链接

如何解决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

with selection on

messageLabel.isSelectable = false
messageLabel.dataDetectorTypes = .all

without selection on

消息标签属性的所有设置:

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 举报,一经查实,本站将立刻删除。