Ich frage mich, wie man die Tastatur verschwinden lassen kann, wenn der Benutzer außerhalb eines UITextField
tippt.
Antworten
Zu viele Anzeigen?
FBente
Punkte
2080
Swift 4
Richten Sie Ihr UIViewController
mit dieser Erweiterungsmethode einmal ein, z. B. in viewDidLoad
:
override func viewDidLoad() {
super.viewDidLoad()
self.setupHideKeyboardOnTap()
}
und die Tastatur wird auch durch Tippen auf die NavigationBar
ausgeblendet.
import UIKit
extension UIViewController {
/// Rufen Sie dies einmal auf, um geöffnete Tastaturen durch Tippen irgendwo im View-Controller zu schließen
func setupHideKeyboardOnTap() {
self.view.addGestureRecognizer(self.endEditingRecognizer())
self.navigationController?.navigationBar.addGestureRecognizer(self.endEditingRecognizer())
}
/// Blendet die Tastatur von self.view aus
private func endEditingRecognizer() -> UIGestureRecognizer {
let tap = UITapGestureRecognizer(target: self.view, action: #selector(self.view.endEditing(_:)))
tap.cancelsTouchesInView = false
return tap
}
}
Rob
Punkte
4889
Swift-Version, das funktioniert in Kombination mit anderen Elementen (wie einem UIButton
oder einem anderen UITextField
):
override func viewDidLoad() {
super.viewDidLoad()
let tapper = UITapGestureRecognizer(target: self, action:#selector(endEditing))
tapper.cancelsTouchesInView = false
view.addGestureRecognizer(tapper)
}
Mr H
Punkte
5214
Wie wäre es damit: Ich weiß, dass dies ein alter Beitrag ist. Es könnte jemandem helfen :)
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSArray *subviews = [self.view subviews];
for (id objects in subviews) {
if ([objects isKindOfClass:[UITextField class]]) {
UITextField *theTextField = objects;
if ([objects isFirstResponder]) {
[theTextField resignFirstResponder];
}
}
}
}
eduludi
Punkte
1568
Dies ist eine gute generische Lösung:
Objective-C:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.view endEditing:YES];
}
Swift:
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
self.view.endEditing(true)
}
Basierend auf der Lösung von @icodebuster: https://stackoverflow.com/a/18756253/417652
newDeveloper
Punkte
1355
8 Stimmen
Dmitry hatte die richtige Antwort. Dies ist kein Gestenproblem - es handelt sich um ein Problem beim Zurücktreten des ersten Responders. Die Antwort von Dmitry ist auch die von Mark, Nutting und LeMarche in Beginning iOS 4 Development, Kapitel 4, Seite 83 empfohlene Lösung.