2017-08-31 59 views
0

我有一個帶有電話號碼的文本字段。它不應該被編輯,但用戶應該有能力通過長按電話來選擇它。當他長按文字時應該被選中,而不僅僅是複製到剪貼板。到目前爲止,我只能與​​一起工作,但我仍然需要它。有關我如何做到這一點的任何建議?我的代碼現在:啓用未啓用用戶交互的文本選擇

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 
} 
+0

爲什麼要將'isUserInteractionEnabled'設置爲false?只是爲了禁用編輯?原因是有一個不同的屬性。 –

+0

將textfiled編輯屬性設置爲false並且UserInteractionEnabled = true – Pushpendra

+0

我希望你們兩個人都可以提到屬性是什麼。唯一聽起來像你提到的東西是'isEditing',這是別的東西,只有得到。 –

回答

0

爲了您的目的,UITextField是不適合的選擇。作爲documentation狀態,UITextField是(重點由我加的):

顯示在您接口的編輯文本區域的對象。

因此,您不能將UITextField設置爲不可編輯。如果要在UI上顯示不應編輯的文本,請使用UILabelUITextView

您可以將UITextViewisEditable屬性設置爲false,只要isSelectable設置爲true,它仍然可以選擇。

A UILabel顯示只讀文本,所以在使用它時甚至不需要關心禁用編輯。

+0

我猜想改成'UITextView'是我唯一的選擇。謝謝。 –

+0

'UITextField'具有'isEnabled'來禁止編輯。 –

+0

@NikolaiRuhe將'isEnabled'設置爲false也會禁用觸摸,所以這不僅僅是禁用編輯的可行解決方案。請參閱文檔:_「將此屬性的值設置爲true以啓用控件,或者將false設置爲禁用它。啓用的控件可以響應用戶交互,而禁用的控件會忽略觸摸事件並可能以不同的方式繪製自己。」_ –

相關問題