Jak mogę wykryć, że użytkownik nacisnął przycisk „Return” na klawiaturze podczas edycji UITextField? Muszę to zrobić, aby zamknąć klawiaturę po naciśnięciu przez użytkownika przycisku „Return”.
Dzięki.
Jak mogę wykryć, że użytkownik nacisnął przycisk „Return” na klawiaturze podczas edycji UITextField? Muszę to zrobić, aby zamknąć klawiaturę po naciśnięciu przez użytkownika przycisku „Return”.
Dzięki.
Odpowiedzi:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return NO;
}
Nie zapomnij ustawić delegata w scenorysie ...
self.yourTextField.delegate = self;
. Działa również wiele pól tekstowych.
Delegacja nie jest wymagana, oto jedna linijka:
- (void)viewDidLoad {
[textField addTarget:textField
action:@selector(resignFirstResponder)
forControlEvents:UIControlEventEditingDidEndOnExit];
}
Niestety nie możesz tego zrobić bezpośrednio w swoim Storyboard (nie możesz połączyć działań z kontrolką, która je emituje w Storyboard), ale możesz to zrobić za pomocą akcji pośredniczącej.
UIControlEventEditingDidEndOnExit
zdarzenie zostanie wysłane tylko wtedy, gdy textFieldShouldReturn:
metoda delegata zwróci TAK (bez wcześniejszej rezygnacji z pola tekstowego).
YES
po tę metodę.
SWIFT 3.0
override open func viewDidLoad() {
super.viewDidLoad()
textField.addTarget(self, action: #selector(enterPressed), for: .editingDidEndOnExit)
}
w funkcji enterPressed () umieść wszystkie zachowania, których szukasz
func enterPressed(){
//do something with typed text if needed
textField.resignFirstResponder()
}
Możesz teraz zrobić to za pomocą storyboardu, używając wysłanego zdarzenia „Did End On Exit”.
W Twoim widoku podklasa kontrolera:
@IBAction func textFieldDidEndOnExit(textField: UITextField) {
textField.resignFirstResponder()
}
W swojej planszy dla żądanego pola tekstowego:
Szybki 5
textField.addTarget(textField, action: #selector(resignFirstResponder), for: .editingDidEndOnExit)
- (BOOL)textFieldShouldReturn:(UITextField *)txtField
{
[txtField resignFirstResponder];
return NO;
}
Po kliknięciu przycisku Enter wywoływana jest ta metoda delegata. Możesz przechwycić przycisk powrotu z tej metody delegata.