เนื้อหาต่อไปนี้ใช้กับทั้งUITextField
และUITextView
.
ข้อมูลที่เป็นประโยชน์
จุดเริ่มต้นของข้อความในช่องข้อความ:
let startPosition: UITextPosition = textField.beginningOfDocument
ส่วนท้ายสุดของข้อความในช่องข้อความ:
let endPosition: UITextPosition = textField.endOfDocument
ช่วงที่เลือกในปัจจุบัน:
let selectedRange: UITextRange? = textField.selectedTextRange
รับตำแหน่งเคอร์เซอร์
if let selectedRange = textField.selectedTextRange {
let cursorPosition = textField.offset(from: textField.beginningOfDocument, to: selectedRange.start)
print("\(cursorPosition)")
}
กำหนดตำแหน่งเคอร์เซอร์
ในการกำหนดตำแหน่งจริงๆแล้ววิธีการทั้งหมดนี้เป็นการตั้งค่าช่วงที่มีค่าเริ่มต้นและค่าสิ้นสุดเหมือนกัน
ไปยังจุดเริ่มต้น
let newPosition = textField.beginningOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
ไปยังจุดสิ้นสุด
let newPosition = textField.endOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
ไปยังตำแหน่งหนึ่งทางด้านซ้ายของตำแหน่งเคอร์เซอร์ปัจจุบัน
// only if there is a currently selected range
if let selectedRange = textField.selectedTextRange {
// and only if the new position is valid
if let newPosition = textField.position(from: selectedRange.start, offset: -1) {
// set the new position
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
}
}
ไปยังตำแหน่งโดยพลการ
เริ่มต้นที่จุดเริ่มต้นและเลื่อน 5 ตัวอักษรไปทางขวา
let arbitraryValue: Int = 5
if let newPosition = textField.position(from: textField.beginningOfDocument, offset: arbitraryValue) {
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
}
ที่เกี่ยวข้อง
เลือกข้อความทั้งหมด
textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument)
เลือกช่วงของข้อความ
// Range: 3 to 7
let startPosition = textField.position(from: textField.beginningOfDocument, offset: 3)
let endPosition = textField.position(from: textField.beginningOfDocument, offset: 7)
if startPosition != nil && endPosition != nil {
textField.selectedTextRange = textField.textRange(from: startPosition!, to: endPosition!)
}
แทรกข้อความที่ตำแหน่งเคอร์เซอร์ปัจจุบัน
textField.insertText("Hello")
หมายเหตุ
ดูสิ่งนี้ด้วย