- (void)textFieldDidBeginEditing:(UITextField *)textField {
[textField selectAll:self];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
Powyżej textField zaznacza się poprawnie, ale kiedy wracam z klawiatury i stukam textField po raz drugi z rzędu, tekst nie jest zaznaczany. Jeśli nie wybieram go po kolei lub usuwam zaznaczenie tekstu przed powrotem z klawiatury, następny fokus tego pola tekstowego zaznacza tekst poprawnie.
Jak mogę zaznaczyć tekst w powyższym przypadku?
2 odpowiedzi
Znalazłem idealne rozwiązanie (wywołaj selectAll w następnym runloop):
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[textField performSelector:@selector(selectAll:) withObject:textField afterDelay:0.f];
}
Rozwiązałem ten problem za pomocą Grand Central Dispatch. Możesz zawinąć [textField selectAll:self];
z wywołaniem dispatch_async
i dispatch_get_main_queue()
jako pierwszy parametr.
dispatch_async(dispatch_get_main_queue()){
// ... code you want to run on the main queue goes here
}
Podobne pytania
Nowe pytania
iphone
NIE używaj tego znacznika, chyba że adresujesz konkretnie iPhone'a i / lub iPoda touch firmy Apple. W przypadku pytań niezależnych od sprzętu użyj tagu [ios]. Więcej tagów do rozważenia to [xcode] (ale tylko jeśli pytanie dotyczy samego IDE), [swift], [objective-c] lub [cocoa-touch] (ale nie [cocoa]). Proszę powstrzymać się od pytań dotyczących iTunes App Store lub iTunes Connect. Jeśli używasz języka C #, oznacz tagiem [mono].