【问题标题】:Code not working for dismissing Keyboard代码不适用于关闭键盘
【发布时间】:2017-12-31 05:52:59
【问题描述】:

我正在尝试创建代码以在触摸键盘外部或按下返回按钮时关闭键盘。但这当然不起作用: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)

    }

}

【问题讨论】:

  • 你在你的函数中定义了 touhesBegan。无论如何它都不会被调用。

标签: swift xcode keyboard


【解决方案1】:

下面的 UITextField 委托方法将用于在按下键盘上的返回按钮时退出您的文本字段。

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

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

【讨论】:

    猜你喜欢
    • 2016-03-16
    • 2010-12-25
    • 2015-09-15
    • 2020-01-20
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多