2015-11-26 22 views
5

Używam poniżej kodu, ale z jakiegoś powodu to nie działa. Dowolny pomysł?Jak wybrać cały tekst w UITextField za pomocą Swift

textField.text = "Hello" 

textField.becomeFirstResponder() 

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

To co mam:

This is what I get:

+1

Czy istnieje jakaś szansa, że ​​"textField" i "self.textField" są różne? – Michael

Odpowiedz

2

nadzieję, że to działa.

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

miałem ten sam problem i rozwiązać tak:

pierwsze, wdrożenie UITextFieldDelegate w ViewController

class ViewController : UITextFieldDelegate 

Następnie, ustaw textField delegata do "self"

textField.delegate = self 

Następnie dodaj tę funkcję do swojej klasy ViewController

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

Jeśli już przy użyciu ViewController jako delegat do innych pól tekstowych, które nie chcą zachowywać się w ten sposób, można po prostu użyć przełącznika, tak:

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

     case default: 
       break; 
    } 
} 
2

Żaden z pozostałych odpowiedzi mi pomogły. Okazało się, że muszę umieścić mój kod w viewDidAppear zamiast viewDidLoad:

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

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

} 

Dowiedziałem się również, że istnieją inne sposoby, aby zaznaczyć cały tekst, który inni mogą znaleźć pomocne:

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

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

Aktualizacja na szybkie 4 od 2017

func textFieldDidBeginEditing(_ textField: UITextField) 
    { 
     textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument) 
    } 
Powiązane problemy