Ich habe überall danach gesucht, aber ich kann es einfach nicht finden. Ich weiß, wie man die Tastatur mit Objective-C
ausblendet, aber ich habe keine Ahnung, wie man das mit Swift
macht. Weiß das jemand?
Antworten
Zu viele Anzeigen?Für Swift 3 ist es sehr einfach
override func touchesBegan(_ touches: Set, with event: UIEvent?) {
self.view.endEditing(true)
}
wenn du die Tastatur verstecken möchtest, wenn die RETURN-Taste gedrückt wird
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
aber im zweiten Fall musst du auch das Delegate von allen Textfeldern an den ViewController in der Main.Storyboard übergeben
//Einfache Übung zum Demonstrieren, unter der Annahme, dass der ViewController //ein Textfeld, einen Button und ein Label hat. Und dass das Label die //Benutzereingaben anzeigen soll, wenn der Button geklickt wird. Und wenn Sie möchten, dass die Tastatur verschwindet, //wenn irgendwo auf dem Bildschirm geklickt wird + beim Klicken der Rückkehr-Taste auf der Tastatur. Vergessen Sie nicht "UITextFieldDelegate" //und "self.userInput.delegate = self" wie unten hinzuzufügen
import UIKit
class ViewController: UIViewController,UITextFieldDelegate {
@IBOutlet weak var userInput: UITextField!
@IBAction func transferBtn(sender: AnyObject) {
display.text = userInput.text
}
@IBOutlet weak var display: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
//Dies ist wichtig für die textFieldShouldReturn-Funktion, die TextfieldDelegate entspricht und es auf self setzt
self.userInput.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Ressourcen freigeben, die wiederhergestellt werden können.
}
//Das ist für die Tastatur, um FORTZUGEHEN !! wenn der Benutzer irgendwo auf
// der Ansicht klickt
override func touchesBegan(touches: Set, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
//Das ist für die Tastatur, um FORTZUGEHEN !! wenn der Benutzer "Return" drückt auf der Tastatur
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
Um auf Esqarrouth's Antwort einzugehen, verwende ich immer folgendes, um die Tastatur zu entfernen, insbesondere wenn die Klasse, von der aus ich die Tastatur entferne, keine view
-Eigenschaft hat und/oder keine Unterklasse von UIView
ist.
UIApplication.shared.keyWindow?.endEditing(true)
Oder, für Bequemlichkeit,
UIApplication.endEditing(true)
mit der folgenden Erweiterung der Klasse UIApplication
:
extension UIApplication {
/// Entfernt die Tastatur aus dem Schlüsselfenster der
/// freigegebenen Anwendungsinstanz.
///
/// - Parameter:
/// - force: `true` angeben, um den ersten Responder zum Aufgeben zu zwingen.
open class func endEditing(_ force: Bool = false) {
shared.endEditing(force)
}
/// Entfernt die Tastatur aus dem Schlüsselfenster dieser
/// Anwendungsinstanz.
///
/// - Parameter:
/// - force: `true` angeben, um den ersten Responder zum Aufgeben zu zwingen.
open func endEditing(_ force: Bool = false) {
keyWindow?.endEditing(force)
}
}
Swift 3: Einfachste Möglichkeit, die Tastatur zu minimieren:
//Tastatur minimieren Methode
func keyboardDismiss() {
textField.resignFirstResponder()
}
//Füge Gesten-Erkennung hinzu, um die Tastatur zu minimieren, wenn das View berührt wird
@IBAction func viewTapped(_ sender: AnyObject) {
keyboardDismiss()
}
//Tastatur minimieren mit der Return-Taste (Done Button)
//Vergiss nicht, das UITextFieldDelegate-Protokoll hinzuzufügen
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
keyboardDismiss()
return true
}