2017-12-03 5 views
0

Ich habe die folgende XIB-Datei (.custom) präsentiert, wenn eine Taste gedrückt wird.ViewController entlassen und Tastatur nicht zusammenarbeiten

@IBAction func contactUsBtnPressed(_ sender: Any) { 
      let contactUs = ContactUsXIB() 
      contactUs.modalPresentationStyle = .custom 
      present(contactUs, animated: false, completion: nil) 
     } 

enter image description here Sie werden in der oberen rechten Ecke bemerken, dass es ein Schließen-Schaltfläche ist. Ich habe den folgenden Code auf diese Taste zugeordnet:

@IBAction func closeBtnPressed(_ sender: Any) { 
     dismiss(animated: false, completion: nil) 
    } 

Dies funktioniert gut.

Für jede der UITextFields möchte ich die Tastatur zu entlassen, wenn der Benutzer irgendwo anders auf dem Bildschirm tippt. ich diesen Code in der zügigen Datei implementiert, dies zu tun:

import UIKit 

class ContactUsXIB: UIViewController { 

    @IBOutlet weak var nameField: UITextField! 
    @IBOutlet weak var emailField: UITextField! 
    @IBOutlet weak var telephoneField: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     setupView() 

    } 

    @IBAction func closeBtnPressed(_ sender: Any) { 
     dismiss(animated: false, completion: nil) 
    } 

    func setupView() { 
     let tap: UIGestureRecognizer = UIGestureRecognizer(target: self, action: #selector(ContactUsXIB.dismissKeyboard)) 
     view.addGestureRecognizer(tap)  
    } 

    @objc func dismissKeyboard() { 
     view.endEditing(true) 
    } 
} 

Jedoch, wenn ich implementieren diese Funktion, die (die abtun Tastatur/view.endEditing (true) Code oft für mich in anderen Anwendungen gearbeitet hat) Schließen-Taste funktioniert nicht, und die Tastatur nicht entlassen. ist hier das falsche Verhalten, das ich jetzt habe:

  1. XIB präsentiert wird, in der Nähe Taste tippen - keine Reaktion

    ein Textfeld tippen - XIB

  2. XIB des Feldes verwiesen wird vorgestellt

    Tippen Sie auf ein Textfeld, tippen Sie auf eine beliebige Stelle, um die Tastatur zu verwerfen - no Antwort

    t ap Schließen-Schaltfläche - keine Antwort

    Hahn ein Textfeld - XIB wird

    entlassen

Jede Idee, wie zu lösen?

Antwort

0
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
    self.view.endEditing(true) 
} 
+0

Vielen Dank Suresh! Das hat perfekt funktioniert. Ist diese Methode besser als ein UIGestureRecognizer usw.? Es ist sicherlich weniger Code! – scottc00

Verwandte Themen