Ich habe überall danach gesucht, aber ich kann es nicht finden. Ich weiß, wie man die Tastatur mit schließt, Objective-C
aber ich habe keine Ahnung, wie ich das machen soll Swift
? Weiß jemand?
ios
swift
uikeyboard
Lagune
quelle
quelle
Antworten:
Hier ist eine andere Möglichkeit, diese Aufgabe auszuführen, wenn Sie diese Funktionalität in mehreren Funktionen verwenden möchten
UIViewControllers
:Jetzt müssen
UIViewController
Sie nur noch diese Funktion aufrufen:Diese Funktion ist als Standardfunktion in meinem Repo enthalten, das viele nützliche Swift-Erweiterungen wie diese enthält. Schauen Sie sich das an: https://github.com/goktugyil/EZSwiftExtensions
quelle
didSelectRowAtIndexPath
.tap.cancelsTouchesInView = false
. Das hat es zumindest für mich gelöst. Hoffe das hilft jemandemEine Antwort auf Ihre Frage, wie Sie die Tastatur in Xcode 6.1 mit Swift unten schließen können:
( Quelle dieser Informationen ).
quelle
Swift 4 funktioniert
Erstellen Sie eine Erweiterung wie unten und rufen Sie
hideKeyboardWhenTappedAround()
Ihren Base View Controller auf.Das Wichtigste, was Sie in Ihrem Base View Controller aufrufen müssen, damit Sie nicht in allen View Controllern ständig anrufen müssen.
quelle
Du kannst anrufen
auf jeder Instanz eines UIResponders, z. B. eines UITextField. Wenn Sie es in der Ansicht aufrufen, in der die Tastatur gerade angezeigt wird, wird die Tastatur geschlossen.
quelle
quelle
für Swift 3 ist es sehr einfach
Wenn Sie die Tastatur beim Drücken der RETURN-Taste ausblenden möchten
Im zweiten Fall müssen Sie jedoch auch den Delegaten aus allen textFields an den ViewController im Main.Storyboard übergeben
quelle
unrecognized selector sent to instance
mit diesem Code.Swift 3: Einfachste Möglichkeit, die Tastatur zu schließen:
quelle
Die Antwort von Dash ist richtig und bevorzugt. Ein eher "verbrannter Erde" -Ansatz ist zu nennen
view.endEditing(true)
. Dies verursachtview
und alle seine Unteransichten zuresignFirstResponder
. Wenn Sie keinen Verweis auf die Ansicht haben, die Sie verwerfen möchten, ist dies eine hackige, aber effektive Lösung.quelle
schnelle 5 nur zwei Zeilen sind genug. Fügen Sie in Ihre
viewDidLoad
sollte Arbeit.Wenn Ihre Tippgeste andere Berührungen blockiert hat, fügen Sie diese Zeile hinzu:
quelle
Im Storyboard:
quelle
Swift 3:
Erweiterung mit
Selector
als Parameter, um zusätzliche Funktionen in der Entlassungsfunktion ausführen zu können undcancelsTouchesInView
Verzerrungen durch Berühren anderer Elemente der Ansicht zu vermeiden.Verwendungszweck:
quelle
Verwenden Sie IQKeyboardmanager , der Ihnen bei der Lösung hilft .....
////////////////////////////////////////////////
! [wie man die Tastatur deaktiviert ..] [1]
quelle
Ich fand, dass die beste Lösung die akzeptierte Antwort von @Esqarrouth mit einigen Anpassungen enthielt:
Die Zeile
tap.cancelsTouchesInView = false
war kritisch: Sie stellt sicher,UITapGestureRecognizer
dass andere Elemente in der Ansicht nicht daran gehindert werden, Benutzerinteraktionen zu empfangen.Die Methode
dismissKeyboard()
wurde auf die etwas weniger elegante geändertdismissKeyboardView()
. Dies liegt daran, dass in der ziemlich alten Codebasis meines ProjektsdismissKeyboard()
bereits zahlreiche Male verwendet wurden (ich stelle mir vor, dass dies nicht ungewöhnlich ist), was zu Compilerproblemen führte.Dann kann dieses Verhalten wie oben in einzelnen View Controllern aktiviert werden:
quelle
Wenn Sie eine Bildlaufansicht verwenden, kann dies viel einfacher sein.
Einfach
Dismiss interactively
im Storyboard auswählen .quelle
Fügen Sie in Swift 4 @objc hinzu:
In der viewDidLoad:
Funktion:
quelle
Fügen Sie diese Erweiterung Ihrem ViewController hinzu:
quelle
Um die Antwort von Esqarrouth zu erweitern , verwende ich immer Folgendes, um die Tastatur zu schließen, insbesondere wenn die Klasse, aus der ich die Tastatur entlasse, keine
view
Eigenschaft hat und / oder keine Unterklasse von istUIView
.Und der Einfachheit halber die folgende Erweiterung der
UIApplcation
Klasse:quelle
quelle
Als unerfahrener Programmierer kann es verwirrend sein, wenn Leute kompetentere und unnötigere Antworten liefern ... Sie müssen keine der oben gezeigten komplizierten Dinge tun! ...
Hier ist die einfachste Option ... Falls Ihre Tastatur als Reaktion auf das Textfeld angezeigt wird - Fügen Sie in Ihrer Touchscreen-Funktion einfach die Funktion resignFirstResponder hinzu . Wie unten gezeigt, wird die Tastatur geschlossen, da der First Responder freigegeben wird (Verlassen der Responder-Kette) ...
quelle
Ich habe IQKeyBoardManagerSwift für die Tastatur verwendet. es ist einfach zu bedienen. Fügen Sie einfach den Pod 'IQKeyboardManagerSwift' hinzu.
Importieren Sie IQKeyboardManagerSwift und schreiben Sie Code
didFinishLaunchingWithOptions
inAppDelegate
.quelle
Dieser eine Liner tritt die Tastatur von allen (beliebigen) UITextField in einer UIView zurück
quelle
Nur eine Codezeile in der
viewDidLoad()
Methode:quelle
In schneller können Sie verwenden
quelle
Für Swift3
Registrieren Sie einen Ereigniserkenner in viewDidLoad
Dann müssen wir die Geste in derselben viewDidLoad zur Ansicht hinzufügen.
Dann müssen wir die registrierte Methode initialisieren
quelle
Das Posten als neue Antwort, da meine Bearbeitung der Antwort von @ King-Wizard abgelehnt wurde.
Machen Sie Ihre Klasse zu einem Delegaten des UITextField und überschreiben Sie touchBegan.
Swift 4
quelle
Sie können auch eine Tippgestenerkennung hinzufügen, um die Tastatur zu verlassen. : D.
quelle
Eine andere Möglichkeit besteht darin, einfach eine große Schaltfläche ohne Inhalt hinzuzufügen, die sich unter allen Ansichten befindet, die Sie möglicherweise berühren müssen. Geben Sie ihm eine Aktion mit dem Namen:
Das Problem mit einem Gestenerkenner war für mich, dass er auch alle Berührungen erfasste, die ich von den tableViewCells erhalten wollte.
quelle
Wenn Sie andere Ansichten haben, die ebenfalls die Berührung erhalten sollen, müssen Sie festlegen
cancelsTouchesInView = false
So was:
quelle
Versuchen Sie dies, es funktioniert
quelle
Wenn die Ansicht mehr als ein Textfeld enthält
Befolgen Sie die Empfehlung von @ modocache , um einen Anruf zu vermeiden
view.endEditing()
können Sie das Textfeld verfolgen, das zum Ersthelfer wurde, das jedoch unübersichtlich und fehleranfällig ist.Eine Alternative besteht darin,
resignFirstResponder()
alle Textfelder im Viewcontroller aufzurufen . Hier ist ein Beispiel für das Erstellen einer Sammlung aller Textfelder (die in meinem Fall ohnehin für den Validierungscode benötigt wurden):Mit der verfügbaren Sammlung ist es einfach, alle zu durchlaufen:
Jetzt können Sie
dismissKeyboard()
Ihren Gestenerkenner aufrufen (oder wo immer es für Sie angemessen ist). Nachteil ist, dass Sie die Liste derUITextField
s pflegen müssen, wenn Sie Felder hinzufügen oder entfernen.Kommentare willkommen. Wenn es ein Problem beim Aufrufen
resignFirstResponder()
von Steuerelementen gibt, die keine Ersthelfer sind, oder wenn es eine einfache und garantierte Möglichkeit gibt, den aktuellen Ersthelfer ohne Fehler zu verfolgen, würde ich gerne davon hören!quelle