2015-11-26 2 views
5

Я использую код ниже, но по какой-то причине он не работает. Есть идеи?Как выбрать весь текст в UITextField с помощью Swift

textField.text = "Hello" 

textField.becomeFirstResponder() 

textField.selectedTextRange = self.textField.textRangeFromPosition(self.textField.beginningOfDocument, toPosition: self.textField.endOfDocument) 

Это то, что я получаю:

This is what I get:

+1

Есть ли вероятность, что «textField» и «self.textField» отличаются? – Michael

ответ

2

Надеется, что это работает.

func textFieldDidBeginEditing(textField: UITextField) { 
     textField.selectedTextRange = self.textField.textRangeFromPosition(self.textField.beginningOfDocument, toPosition: self.textField.endOfDocument) 
    } 
3

У меня была такая же проблема, и я решил так:

-первых, реализовать UITextFieldDelegate в вашем ViewController

class ViewController : UITextFieldDelegate 

Затем, установите TextField делегатом "Я"

textField.delegate = self 

Затем добавьте эту функцию в класс ViewController

func textFieldDidBeginEditing(textField: UITextField) { 
    textField.selectedTextRange = textField.textRangeFromPosition(textField.beginningOfDocument, toPosition: textField.endOfDocument) 
} 

Если вы уже используете ViewController в качестве делегата для других TextFields, что вы не хотите вести себя таким образом, вы можете просто использовать переключатель, как это: не

func textFieldDidBeginEditing(textField: UITextField) { 
    switch textField { 
     case yourTextField: 
       textField.selectedTextRange = textField.textRangeFromPosition(textField.beginningOfDocument, toPosition: textField.endOfDocument) 
       break; 

     case default: 
       break; 
    } 
} 
2

Ни один другой ответы работали для меня. Оказалось, что мне нужно поместить код в viewDidAppear вместо viewDidLoad:

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 

    textField.becomeFirstResponder() 
    textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument) 

} 

Я также узнал, что есть некоторые дополнительные способы, чтобы выбрать весь текст, другие могут оказаться полезными:

// Select all without showing menu (Cut, Copy, etc) 
textField.SelectAll(nil) 

// Select all and show menu 
textField.SelectAll(self) 
0

Update для быстрого 4 с 2017 года

func textFieldDidBeginEditing(_ textField: UITextField) 
    { 
     textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument) 
    } 
Смежные вопросы