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?override func viewDidLoad() {
super.viewDidLoad()
//Sucht nach einzelnen oder mehrfachen Fingertipps.
let tippen = UITapGestureRecognizer(ziel: self, aktion: #selector(UIInputViewController.dismissKeyboard))
//Entkommentieren Sie die unten stehende Zeile, wenn Sie nicht möchten, dass der Fingertipp andere Interaktionen beeinträchtigt oder abbricht.
//tippen.cancelsTouchesInView = false
view.addGestureRecognizer(tippen)
}
//Ruft diese Funktion auf, wenn der Fingertipp erkannt wird.
@objc func dismissKeyboard() {
//Bewirkt, dass die Ansicht (oder eines ihrer eingebetteten Textfelder) den Status des ersten Responders aufgibt.
view.endEditing(true)
}
Hier ist eine andere Möglichkeit, diese Aufgabe zu erledigen, wenn Sie diese Funktionalität in mehreren UIViewControllern
verwenden möchten:
// Platziere diesen Code überall, wo du möchtest
erweiterung UIViewController {
func hideKeyboardWhenTappedAround() {
let tippen = UITapGestureRecognizer(ziel: self, aktion: #selector(UIViewController.dismissKeyboard))
tippen.cancelsTouchesInView = false
view.addGestureRecognizer(tippen)
}
@objc func dismissKeyboard() {
view.endEditing(true)
}
}
Jetzt musst du in jedem UIViewController
nur noch diese Funktion aufrufen:
override func viewDidLoad() {
super.viewDidLoad()
self.hideKeyboardWhenTappedAround()
}
Diese Funktion ist als Standardfunktion in meinem Repository enthalten, das viele nützliche Swift-Erweiterungen wie diese enthält, schau es dir an: https://github.com/goktugyil/EZSwiftExtensions
Die Antwort auf Ihre Frage, wie Sie die Tastatur in Xcode 6.1 unter Verwendung von Swift ausblenden können, lautet unten:
import UIKit
class ItemViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var textFieldItemName: UITextField!
@IBOutlet var textFieldQt: UITextField!
@IBOutlet var textFieldMoreInfo: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
textFieldItemName.delegate = self
textFieldQt.delegate = self
textFieldMoreInfo.delegate = self
}
...
/**
* Wird aufgerufen, wenn die 'Return'-Taste gedrückt wird. Gib 'true' zurück, um zu bestätigen.
*/
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
/**
* Wird aufgerufen, wenn der Benutzer auf die Ansicht (ausserhalb des UITextField) klickt.
*/
override func touchesBegan(touches: Set, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
}
Swift 4 arbeiten
Erstellen Sie die Erweiterung wie unten & rufen Sie hideKeyboardWhenTappedAround()
in Ihrem Basiskontroller auf.
//
// UIViewController+Extension.swift
// Projektname
//
// Erstellt von ABC am 2.3.18.
// Urheberrecht © 2018 ABC. Alle Rechte vorbehalten.
//
import UIKit
extension UIViewController {
func hideKeyboardWhenTappedAround() {
let tapGesture = UITapGestureRecognizer(target: self,
action: #selector(hideKeyboard))
view.addGestureRecognizer(tapGesture)
}
@objc func hideKeyboard() {
view.endEditing(true)
}
}
Das Wichtigste, was in Ihrem Basiskontroller aufgerufen werden muss, damit nicht jedes Mal in allen Ansichtscontrollern aufgerufen werden muss.
swift 5 sind nur zwei Zeilen ausreichend. Füge sie in dein viewDidLoad
ein und es sollte funktionieren.
let tapGesture = UITapGestureRecognizer(target: view, action: #selector(UIView.endEditing))
view.addGestureRecognizer(tapGesture)
Wenn dein Tap-Gesture andere Berührungen blockiert, füge diese Zeile hinzu:
tapGesture.cancelsTouchesInView = false
- See previous answers
- Weitere Antworten anzeigen