Die eleganteste Art, die Zahlentastatur für ein UITextField auf einem UiTableView zu verwerfen - ios, uitableview

Ich habe ein UITextField auf einem UITableView und ich benutze eine Zahlentastatur, aber ich möchte, dass es geschlossen wird, wenn der Benutzer auf etwas außer dem UiTextField klickt.

Ich habe mehrere Lösungen gesehen, aber es scheint keine endgültige Antwort zu geben. Zum Beispiel sprechen manche über Gesten und wenn ich sie implementiere, scheinen sie nicht mit dem folgenden Code zu funktionieren:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

[[self view] endEditing:TRUE];

}

Wie Sie sehen können, versuche ich es, aber es gibt keinen Weg, der zu funktionieren scheint. Kann mir bitte jemand helfen?

Vielen Dank

Antworten:

3 für die Antwort № 1

In der Regel möchten Sie die Berührung testengegen Bereiche, die die Tastatur nicht verwerfen sollten; aber im Allgemeinen besteht die Anforderung darin, dem aktuell fokussierten Steuerelement mitzuteilen, dass es seinen Status als "firstResponder" zurückgeben soll. Es könnte so aussehen:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.userInput resignFirstResponder];
}

Vielleicht möchten Sie aber auch ein besonderes betrachtenGestenerkenner dafür, damit Sie das NSSet der Berührungen auf lange Sicht nicht überanalysieren müssen (delegieren Sie an den GestureRecognizer die Aufgabe, den Unterschied zwischen einem tatsächlichen "Abweisen-Bitten!" -Tap und einem "kann ich das scrollen zu bestimmen "Swipe.


3 für die Antwort № 2

Sie sollten stattdessen resignFirstResponder verwenden:

[textField resignFirstResponder];

2 für die Antwort № 3

Verwenden Sie den folgenden Code

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
// Note the "!":
if(![[touch view] class] isKindOfClass [UITableViewController class]]){
// It"s not a bubble they touched, dismiss the keyboard:
[self.view endEditing:YES];
}
[super touchesBegan:touches withEvent:event];
}

oder aber

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
// Note the "!":
if(![[touch view] class] isKindOfClass [UITableViewController class]]){
// It"s not a bubble they touched, dismiss the keyboard:
[textField resignFirstResponder];

}
[super touchesBegan:touches withEvent:event];
}

Dies hilft Ihnen zu tun, was Sie wollen


Verwandte Fragen
Speisekarte