Ich benutze, UITextfied
während ich auf eine textgesteuerte Tastatur klicke, aber wenn ich die returnTaste gedrückt habe , verschwindet die Tastatur nicht. Ich habe den folgenden Code verwendet:
func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore.
{
return true;
}
Die Methode resignfirstresponder funktioniert nicht.
ios
swift
uitextfield
Ashwinkumar Mangrulkar
quelle
quelle
Antworten:
Sie können die App mit der folgenden Funktion dazu bringen, die Tastatur zu schließen
Hier ist ein vollständiges Beispiel, um dies besser zu veranschaulichen:
Codequelle: http://www.snip2code.com/Snippet/85930/swift-delegate-sample
quelle
UITextFieldDelegate
!func textFieldShouldReturn(textField: UITextField) -> Bool {
wechsle zufunc textFieldShouldReturn(_ textField: UITextField) -> Bool {
Der
return true
Teil davon teilt dem Textfeld nur mit, ob es zurückkehren darf oder nicht.Sie müssen das Textfeld manuell anweisen, die Tastatur zu schließen (oder was auch immer der Ersthelfer ist), und dies geschieht
resignFirstResponder()
wie folgt :quelle
UITextFieldDelegate
?In
UITextFieldDelegate
der Klasse Erklärung:Schließen Sie das an
textfield
oder schreiben Sie es programmgesteuertStellen Sie Ihren Ansichts-Controller so ein, wie die in der Ansicht delegierten Textfelder geladen wurden:
Fügen Sie die folgende Funktion hinzu
Bei alledem wird Ihre Tastatur durch Berühren außerhalb des Textfelds sowie durch Drücken der Eingabetaste geschlossen.
quelle
UITextFieldDelegate
... vielen Dank!Swift 4.2 - Kein Delegierter erforderlich
Sie können aus dem UITextField einen Aktionsausgang für die " Ausgelöste primäre Aktion " erstellen und den Ersthelfer für den übergebenen Absenderparameter zurücktreten:
Super einfach.
(Vielen Dank an Scott Smiths 60-Sekunden-Video, das mich darauf hingewiesen hat: https://youtu.be/v6GrnVQy7iA )
quelle
Simple Swift 3 Lösung: Fügen Sie diese Funktion Ihren Ansichtscontrollern hinzu, die über ein Textfeld verfügen:
Öffnen Sie dann Ihren Assistenten-Editor und stellen Sie sicher, dass sich sowohl Ihr Main.storyboard auf der einen Seite Ihrer Ansicht als auch die gewünschte Datei view controller.swift auf der anderen Seite befindet. Klicken Sie auf ein Textfeld und wählen Sie dann im rechten Dienstprogrammfenster die Registerkarte "Verbindungsinspektor anzeigen" aus. Steuern Sie das Ziehen von "Did End on Exit" auf die obige Funktion in Ihrer Swift-Datei. Wiederholen Sie diesen Vorgang für jedes andere Textfeld in dieser Szene und verknüpfen Sie ihn mit derselben Funktion.
quelle
@ RSC
Für mich ist die kritische Ergänzung in Xcode Version 6.2 (6C86e) in
override func viewDidLoad()
Ich habe versucht, es stundenlang mit der Eingabetaste zum Laufen zu bringen, bis ich Ihren Beitrag gefunden habe, RSC. Danke dir!
Wenn Sie die Tastatur ausblenden möchten, wenn Sie eine andere Stelle auf dem Bildschirm berühren:
quelle
Um eine automatische Tastaturentlassung zu erhalten, habe ich diesen Code in eine der Methoden der Klasse meines benutzerdefinierten Textfelds eingefügt:
Ersetzen Sie den Namen Ihrer Verkaufsstelle durch
textField
.quelle
mytextfield.addTarget(nil, action:Selector(("firstResponderAction:")), for:.editingDidEndOnExit)
(Swift 5-Version)viewDidLoad
eingegeben, aber weder zurückgegeben noch irgendwo außerhalb des Textfelds getippt hat funktioniert. Ich habe die Textfelder erhalten, indem ich jeweils eine Steckdose erstellt habe.viewDidAppear
Methode dieser Klasse eingefügt.UIAlertController.addTextField(configurationHandler: {(textField: UITextField!) in textField.delegate = self textField.addTarget(self, action: #selector(MySubclass.textChanged(_:)), for: .editingChanged) })
Dies mag für meinen Fall etwas zu spezifisch sein, aber hoffentlich hilft es. Versuchen Sie, den Anruf innerhalb zuviewDidAppear
tätigen und gegebenenfalls den Delegierten zu entsprechen.Eine andere Möglichkeit, die meistens das Storyboard verwendet und es Ihnen leicht macht, mehrere Textfelder zu haben, ist:
Verbinden Sie alle Ihre Textfelder für diesen Ansichtscontroller mit dieser Aktion für das
Did End On Exit
Ereignis jedes Felds.quelle
Ich würde vorschlagen, die Klasse von RSC zu initiieren:
}}
quelle
Wenn der Benutzer auf der Texttastatur auf die Schaltfläche Fertig tippt, wird ein Ereignis zum Beenden beim Beenden generiert. Zu diesem Zeitpunkt müssen wir das Textfeld anweisen, die Kontrolle aufzugeben, damit die Tastatur verschwindet. Dazu müssen wir unserer Controller-Klasse eine Aktionsmethode hinzufügen. Wählen Sie ViewController.swift und fügen Sie die folgende Aktionsmethode hinzu:
Wählen Sie im Projektnavigator Main.storyboard aus und rufen Sie den Verbindungsinspektor auf. Ziehen Sie aus dem Kreis neben Did End On Exit auf das gelbe View Controller-Symbol im Storyboard und lassen Sie los. Ein kleines Popup-Menü mit dem Namen einer einzelnen Aktion wird angezeigt, die wir gerade hinzugefügt haben. Klicken Sie auf die Aktion textFieldDoneEditing, um sie auszuwählen, und fertig.
quelle
Hier ist das Swift 3.0-Update für den Kommentar von peacetype:
quelle
Ich hasse es, jedem UIViewController die gleiche Funktion hinzuzufügen. Durch Erweitern von UIViewController zur Unterstützung von UITextFieldDelegate können Sie das Standardverhalten "Return Pressed" angeben.
Wenn Sie einen neuen UIViewController und UITextField erstellen, müssen Sie lediglich einen Zeilencode in Ihren UIViewController schreiben.
Sie können diesen einzeiligen Code sogar weglassen, indem Sie den Delegaten in Main.storyboard einbinden. (Verwenden Sie "Strg" und ziehen Sie von UITextField zu UIViewController.)
quelle
Swift 3
Fügen Sie diesen Code unten Ihrem VC hinzu
Funktioniert bei mir
quelle
Stellen Sie sicher, dass Ihr textField-Delegat auf den Ansichtscontroller eingestellt ist, in den Sie Ihren Textfeldcode schreiben.
quelle
Schnell
Verwenden der optionalen Funktion von
UITextFieldDelegate
.false
bedeutet, dass das Feld zum Rücktritt aufgefordert werden kann.true
- Rücktritt erzwingen.quelle
dann benutzt du diese Funktion
quelle
Sie können dies überall platzieren, aber nicht in einem UIButton
dann können Sie diesen Code in eine Schaltfläche einfügen (auch zum Beispiel):
das hat bei mir funktioniert
quelle
In dem Ansichts-Controller, den Sie verwenden:
quelle
Sie sollten die UITextfied mit einem Delegaten des View Controllers verbinden, damit diese Funktion aufgerufen wird
quelle
All in One Hide Keyboard und Move View on Keyboard Open: Swift 5
quelle