Ich habe eine ganze Reihe von Steuerelementen, die über viele Tabellenzellen in meiner Tabelle verstreut sind, und ich frage mich, ob es einen einfacheren Weg gibt, die Tastatur zu deaktivieren, ohne alle meine Steuerelemente in einer Schleife durchlaufen zu müssen und sie alle als erste Antwort zurücktreten zu lassen. Ich schätze, die Frage ist: Wie würde ich den aktuellen ersten Responder auf die Tastatur bekommen?
Antworten
Zu viele Anzeigen?Ja, endEditing ist die beste Option. Und ab iOW 7.0, UIScrollView
verfügt über eine coole Funktion, um die Tastatur bei der Interaktion mit der Bildlaufansicht zu deaktivieren. Um dies zu erreichen, können Sie keyboardDismissMode
Eigenschaft von UIScrollView
.
Legen Sie den Modus für das Verlassen der Tastatur wie folgt fest:
tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag
Es gibt nur wenige andere Arten. Schauen Sie sich dies an Apple-Dokument .
Es ist nicht schön, aber die Art und Weise, wie ich den firstResponder zurücktrete, wenn ich nicht weiß, was der Responder ist:
Erstellen Sie ein UITextField, entweder in IB oder programmatisch. Machen Sie es versteckt. Verknüpfen Sie es mit Ihrem Code, wenn Sie es in IB erstellt haben. Wenn Sie dann die Tastatur ausblenden wollen, schalten Sie den Responder auf das unsichtbare Textfeld um, und legen es sofort wieder ab:
[self.invisibleField becomeFirstResponder];
[self.invisibleField resignFirstResponder];
Update
Ich habe einen anderen einfachen Weg gefunden
einfach eine Eigenschaft deklarieren :-
@property( strong , nonatomic) UITextfield *currentTextfield;
und einen Gestenerkenner für Tippgesten:-
@property (strong , nonatomic) UITapGestureRecognizer *resignTextField;
In ViewDidLoad
_currentTextfield=[[UITextField alloc]init];
_resignTextField=[[UITapGestureRecognizer alloc]initWithTarget:@selector(tapMethod:)];
[self.view addGestureRecognizer:_resignTextField];
Implementierung der Textfeld-Delegiertenmethode didBeginEditing
-(void)textFieldDidBeginEditing:(UITextField *)textField{
_currentTextfield=textField;
}
Implementieren Sie Ihre Tipp-Gesten-Methode (_resignTextField)
-(void)tapMethod:(UITapGestureRecognizer *)Gesture{
[_currentTextfield resignFirstResponder];
}