启用选择文本而不启用用户交互

Enable selecting text without user interaction enabled

我有一个文本字段,其中包含 phone 数字。它不应被编辑,但用户应该能够通过长按 phone 来 select 它。当他长按时,文本应该得到 selected,而不仅仅是复制到剪贴板。到目前为止,我只让它与 isUserInteractionEnabled == true 一起使用,但我仍然需要将它设置为 false。关于我如何做到这一点有什么建议吗?我现在的代码:

func longPress(_ longPressGestureRecognizer: UILongPressGestureRecognizer) {
    self.cell?.textField.isUserInteractionEnabled = true
    self.cell?.textField.becomeFirstResponder()
    self.cell?.textField.selectedTextRange = self.cell?.textField.textRange(from: (self.cell?.textField.beginningOfDocument)!, to: (self.cell?.textField.endOfDocument)!)
    //self.cell?.textField.isUserInteractionEnabled = false
}

就您的目的而言,UITextField 不是合适的选择。正如 documentation 所述,UITextField 是(我强调的):

An object that displays an editable text area in your interface.

因此,您不能将 UITextField 设置为不可编辑。如果要在 UI 上显示不可编辑的文本,请使用 UILabelUITextView

您可以将 UITextViewisEditable 属性 设置为 false,只要 isSelectable 设置为 true,它仍然可以选择。

A UILabel 显示只读文本,因此您甚至不需要在使用时注意禁用编辑。