2017-07-25 9 views
1

キーボードの外に触れるときや戻るボタンを押したときにキーボードを閉じるコードを作成しようとしています。しかし、それはうまく動作しません:Dそれは私がここで尋ねている理由です。どうすればそれを動作させることができますか?エラーは出ませんが、応答していません。コードを解除できないキーボード

さらに簡単な解決策がある場合は、それも提供してください。

ありがとうございました! UITextFieldのデリゲートメソッドの下

import UIKit 

class EntryViewController: UIViewController, UITextFieldDelegate { 

    @IBOutlet weak var UserEmailAdresInput: UITextField! 

    @IBOutlet weak var UserPasswordInput: UITextField! 

    @IBOutlet weak var UserPasswordInputRepeated: UITextField! 

    @IBOutlet weak var UserSignUp: UIButton! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.UserEmailAdresInput.delegate = self 
     self.UserPasswordInput.delegate = self 
     self.UserPasswordInputRepeated.delegate = self 


    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
    @IBAction func SignUp(_ sender: Any) { 

     let UserEmail = UserEmailAdresInput.text; 
     let UserPassword = UserPasswordInput.text; 
     let UserPasswordRepeated = UserPasswordInputRepeated.text; 

     //Hide Keyboard upon Touch 

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

     //Hide Keyboard upon Return Key 
     func textFieldShouldReturn(textField: UITextField) -> Bool { 
      UserEmailAdresInput.resignFirstResponder() 
      return (true) 


     } 

     //Check if fields are filled in correctly 

     if(UserEmail?.isEmpty == true || UserPassword?.isEmpty == true || UserPasswordRepeated?.isEmpty == true){ 

      displayAlertMessage(userMessage: "Alle velden moeten ingevuld worden"); 
      return; 

     } 

     if(UserPassword != UserPasswordRepeated){ 

      displayAlertMessage(userMessage: "Wachtwoorden zijn niet gelijk"); 
      return; 
     } 

     //Store Data 
     UserDefaults.standard.set(UserEmail, forKey: "UserEmail"); 
     UserDefaults.standard.set(UserPassword, forKey: "UserPassword"); 
     UserDefaults.standard.synchronize(); 

     //SignUp Succesfull 
     var Alert = UIAlertController(title:"Succesvol aangemeld!", message: "Ga naar je email inbox om je aanmelding te voltooien", preferredStyle: UIAlertControllerStyle.alert); 

     let OkAction = UIAlertAction(title:"Ok", style: UIAlertActionStyle.default, handler: nil); 

     Alert.addAction(OkAction); 
     self.present(Alert, animated: true, completion: nil) 


    } 

    func displayAlertMessage(userMessage:String){ 

     var Alert = UIAlertController(title:"Alert", message: userMessage, preferredStyle: UIAlertControllerStyle.alert); 

     let OkAction = UIAlertAction(title:"Ok", style: UIAlertActionStyle.default, handler: nil); 

     Alert.addAction(OkAction); 

     self.present(Alert, animated: true, completion: nil) 

    } 

} 
+0

あなたのfuncの中にtouhesBeganを定義しています。それはとにかく呼び出されません。 –

答えて

1

キーボードのリターンボタンを押して上のテキストフィールドを辞任するときに使用します:

は、ここに私の完全なコードです。

func textFieldShouldReturn(textField: UITextField) -> Bool { 
      if textField == UserEmailAdresInput{ 
       UserEmailAdresInput.resignFirstResponder() 
      } else if textField == UserPasswordInput{ 
       UserPasswordInput.resignFirstResponder() 
      } else { 
       UserPasswordInputRepeated.resignFirstResponder() 
      } 
      return true 
    } 

signupメソッドの外にtouchesBeganとtextFieldShouldReturnメソッドを配置します。

+0

ありがとうございます。できます! :D –