2016-05-10 8 views
1

Ich möchte Funktionalität hinzufügen, um die Tastatur auf UITextFields und UITextViews zu verwerfen, wenn die Benutzer außerhalb der Tastatur tippen. Ich habe eine ähnliche Ansicht wie New Event in iOS Calendar, das sind eine Reihe von statischen Tabellenzellen, von denen einige Textfelder haben und einige an eine Show-Ansicht gesendet werden (wie die "Repeat" -Zelle im New Event in der Kalender-App).iOS-Tastatur vom Tippen abweisen, ohne Tabellenansicht zu unterbrechen Zellenabgriffsfunktionalität

Ich habe versucht, mit dem folgenden:

override func viewDidLoad() { 
    super.viewDidLoad() 

    //Looks for single or multiple taps. 
    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard") 
    view.addGestureRecognizer(tap) 
} 

//Calls this function when the tap is recognized. 
func dismissKeyboard() { 
    //Causes the view (or one of its embedded text fields) to resign the first responder status. 
    view.endEditing(true) 
} 

aber bricht die Funktionalität der Zellen, die tippen, um eine Show zu segue. Ich kann das umgehen, indem ich einfach die Tastatur auf "Return" setze, aber das kann ich nicht mit meiner UITextView machen, da das eine neue Zeile hinzufügt. Die Kalender App entlässt die Tastatur in der UITextView auf, was scheint, ein Streichen nach oben und unten zu sein, aber ich bin mir nicht sicher, wie ich diese Funktionalität selbst hinzufügen, wie ich neu in iOS-Programmierung bin.

Irgendwelche Lösungen, um dieses Problem zu umgehen?

Antwort

1

Der Kalender-App entlässt die Tastatur in der UITextView auf, was scheint, es tut ein Swipe nach oben und unten

der Tat zu sein. Und das solltest du tun. Eine Textansicht und eine Tabellenansicht sind beide Bildlaufansichten. Die übliche Lösung besteht daher darin, die Bildlaufansicht keyboardDismissMode auf .Interactive oder .OnDrag zu setzen. So macht es der Kalender, und so sollten Sie es tun.

+0

Also versuchte ich 'self.tableView.keyboardDismissMode = .OnDrag' (.Interactive schien nicht für mich, etwas zu tun) und es scheint, wie ich arbeiten wollte, oben oder unten ziehen entlässt die Tastatur sowohl in Textfeld/Aussicht. Aber wenn ich wische, um zu entlassen, bekomme ich das im Log ausgedruckt '- [UIWindow endDisablingInterfaceAutorotationAnimated:] angerufen > ohne passende -beginDisablingInterfaceAutorotation. Ignorieren. Ist das etwas, worüber ich mich Sorgen machen muss? –

+1

Nein, das ist nur eine falsche tastaturbezogene Nachricht. Wenn Sie Zeit haben, melden Sie dies Apple, aber Sie können es ignorieren. – matt

2

Wählen Sie Ihre TableView in Storyboards. Dann im Attributinspektor Tastatur finden und auf "Interaktiv ablehnen" setzen. Dies sollte ermöglichen, dass der Finger nach unten wischen kann, um ihn zu schließen.

+0

Dies funktioniert nicht mit dem iOS 10 Simulator. Fehle ich etwas? Dismiss bei Drag funktioniert gut. – Skywalker

0

Eine andere Lösung ist, dass Sie UITapGestureRecognizer on View hinzufügen können, und wenn eine Ansicht angeklickt wird, dann schließen Sie die Tastatur wie unten.

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 
[self.view addGestureRecognizer:tapGesture]; 

-(void)handleTap:(UITapGestureRecognizer *)sender { 
    //do stuff 
} 
Verwandte Themen