2017-07-25 91 views
1

我试图创建代码来解除键盘时触摸键盘外或按下按钮时。但这是不正常的:D这就是我在这里问的原因。我怎样才能使它工作?它不会给出错误,但它只是没有响应。代码不工作解雇键盘

如果有更简单的解决方案,那么也欢迎提供。

谢谢你的时间和答案!

这里是我的全码:

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

我定义了touhesBegin你的func。它不会被称为无论如何。 –

回答

1

下面的UITextField委托方法将使用你的辞职在印刷机上文本框上返回按钮的键盘上。

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

并将您的touchesBegin和textFieldShouldReturn方法放在signUp方法之外。

+0

谢谢。有用! :d –