Wie man den Ersthelfer aus dem Textfeld zurückzieht, wenn der Benutzer anderswo tippt?
Ich gefüllt haben meiner Ansicht nach mit ScrollView (gleiche Größe wie die Sicht) und ich bin stecken, wie es zum Rücktritt first responder, wenn der Benutzer Tippen Sie auf an anderer Stelle in der Ansicht (oder der scrollview). Jede Idee, wie das zu tun ? Ich bin mit der folgenden Methode, aber es funktioniert nicht wie erwartet:
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
Thx für die Hilfe,
Stephane
InformationsquelleAutor der Frage Steve | 2011-10-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich hier eine Antwort: link
Diese Methode ist so konzipiert das richtige für Sie!
Referenz: endEditing:
InformationsquelleAutor der Antwort DanSkeel
Für eine weitere stabile und saubere Lösung fügen Sie einen tap gesture recognizer auf Ihrem primären anzeigen.
Diese werden besser mit verschachtelten Ansichten und wird sauberer als geheime Tasten im code und UI-builder.
Ihrer Ansicht nach haben Belastung:
..und definieren Sie Ihr Ziel-Aktion auf Tippen Sie auf:
InformationsquelleAutor der Antwort Andres Canella
Die beste option ist der kürzeste Weg 😉
InformationsquelleAutor der Antwort Onder OZCAN
Für Swift 3 und Swift 4 Sie dies tun können:
InformationsquelleAutor der Antwort pableiros
UIViewController
erbt vonUIResponder
so eine naive Art und Weise (ich bin ziemlich sicher, dass ist nicht der Klügste Weg, es zu tun) wäre durch überschreiben der folgenden Methoden (mindestens 1 davon)Weiter, Sie konnte die berührte Ansicht zu tun
endlich zurücktreten, der first responder, wenn diese Ansicht ist nicht dein Textfeld
_
Nachteile dieses Ansatzes:
Werden Sie haben, um die "tap" selbst. (Dasselbe problem wie die alte iOS 3.1 oder eine frühere Version). Sie haben zu kommen mit Ihren eigenen Implementierung zu unterscheiden einzelne Hähne von drags, swipes, Doppel-taps, lange Armaturen, etc. Ist nicht schwer zu bekommen, es funktioniert gut, aber es ist nicht wahrscheinlich, dass Sie es bekommen genau die gleiche Weise Apple erkennt taps (timings, Entfernungen, schwellen zählen!)
Aber, dass hängt von Ihren Bedürfnissen ab.
Wenn die view-Struktur ist einfach genug, dann könnte man hinzufügen, eine gestik-Erkennung der container-Ansicht und zurücktreten der first responder jedes mal, wenn der handler aufgerufen wird 🙂
Hoffe, das hilft
InformationsquelleAutor der Antwort nacho4d
InformationsquelleAutor der Antwort Deepakraj Murugesan
Bisher hat noch niemand präsentiert die beste Antwort hier:
Aus der Dokumentation zu dieser Methode:
Ich Fett den relevanten Teil dieses Absatzes. Durch die Angabe
nil
für dieto:
parameter, wir rufen automatisch den gegebenen Auswahl auf der first responder, wo es ist, und wir brauchen nicht zu wissen von wo in der view-Hierarchie es ist. Dies kann auch verwendet werden, um Aufruf anderer Methoden auf die first responder-als auch, nicht nur die Ursache, die es zum Rücktritt first responder-status.InformationsquelleAutor der Antwort Gavin
Geben einen einzigartigen Tag, um Ihre UITextfield (also 333), dann zum Rücktritt der first responder, dies zu tun:
InformationsquelleAutor der Antwort Lefteris
Erstellen Sie einfach ein
IBOutlet
oder Mauszeiger, um das Textfeld und rufen Sie[textField resignFirstResponder];
aus, wo immer Sie wollen.InformationsquelleAutor der Antwort Or Ron
und der Selektor
InformationsquelleAutor der Antwort Ghanshyam Tomar
Wenn möglich, die beste option ist, um Ihren UIView Erben von UIButton statt.
Müssen Sie nur ändern Sie im Interface Builder und sofort bekommen Sie die Optionen, um eine Aktion erstellen "Touch Up Inside" wie jede andere Taste.
Ihrer Sicht funktionieren wird, wie üblich, weil UIButton ist immer noch eine Ansicht, aber Sie werden erhalten eine Nachricht, wenn jemand tippt auf die anzeigen. Dort können Sie anrufen
Zurücktreten Tastatur.
Bitte beachten Sie, dass wenn Ihre Ansicht ist ein UIScrollView diese Lösung ist nicht für Sie.
InformationsquelleAutor der Antwort Julio Bailon
Erstellen Sie Ihre IBOutlet in der ViewController.h-Datei, wie unten:
Fügen Sie diese zu Ihrem ViewController.m-Datei:
wie unten:
InformationsquelleAutor der Antwort EFE
Für meine Anwendung [self.Ansicht endEditing:JA] hat nicht funktioniert.
Schließlich stellen Sie sicher, dass die Tastatur versteckt war, ich musste eine meiner Ansichten die first responder, und dann sofort machen, es zurücktreten, wie pro die Funktion unten:
InformationsquelleAutor der Antwort Lenny
Dies ist, was ich Tue...
InformationsquelleAutor der Antwort Fahim Parkar
Dies ist die einfachste Art iv gefunden, die konsequent arbeitet. Fügen Sie einfach ein tap gesture recognizer auf die Ansicht, und du bist gut zu gehen.
}
InformationsquelleAutor der Antwort Andrew Cook
Update
Fand ich eine weitere einfache Möglichkeit
einfach deklarieren Eigenschaft :-
und eine Tap-Geste Gecognizer:-
In ViewDidLoad
Umsetzung der textfield-delegate-Methode didBeginEditing
Implementieren Sie Ihre Tap-Geste-Methode (_resignTextField)
InformationsquelleAutor der Antwort dreamBegin
Erstellen, die eine große Schaltfläche, die hinter allem steht, und die Schaltfläche callback-Anrufe
resignFirstResponder
zu jedem input, den Sie haben. Nur sicherstellen, dass alles, was der Benutzer interagiert mit oben auf die Schaltfläche.Natürlich wird die Schaltfläche benutzerdefinierte rect und transparent.
Ich würde in der Umsetzung einen IBOutletCollection genannt resignables und jeden Beitrag zu dieser Sammlung. Und die callback-button durchläuft, Sammlung aufrufen
resignFirstResponder
Sie alle.Edit: wenn es ein re-beträchtliche scroll-Ansicht, denken Sie daran, die richtige Einstellung der Größe der Marker in der Schaltfläche Ansicht-option, so wird der button immer erweitern und Vertrag, um die scrollview - Höhe und Breite
InformationsquelleAutor der Antwort Sergio Campamá