快速隐藏键盘

时间:2016-05-11 05:46:50

标签: ios swift

输入四个字符后,有没有办法在swift中自动隐藏键盘?我实际上有一个隐藏键盘的代码,但用户必须单击屏幕上的任何位置。这是代码:

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

提前致谢!

4 个答案:

答案 0 :(得分:1)

如果我的问题正确,请考虑以下示例代码:

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var txtF: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        txtF.delegate = self
        txtF.addTarget(self, action: "textFieldDidChange:", forControlEvents: UIControlEvents.EditingChanged)
    }


    func textFieldDidChange(textField: UITextField) {

        if textField == txtF {

            if textField.text?.characters.count == 4 {

                self.txtF.resignFirstResponder()
            }
        }
    }

    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

        if textField == txtF {

            if textField.text?.characters.count > 3 {

                self.txtF.resignFirstResponder()
                return false
            } else {

                return true
            }
        } else {

            return true
        }
    }
}

上面的代码键盘会在textField有4个字符时隐藏,之后如果用户再次点击textField键盘会弹出,用户将无法在textField中输入任何文字,键盘会再次隐藏。

结果将是:

enter image description here

希望这会有所帮助。

答案 1 :(得分:0)

这是隐藏键盘或数字键盘的最简单方法。 首先,你需要一个按钮,你需要使它成为屏幕的大小。将它发送到场景的后面并将其连接到IBAction.Then您的代码应如下所示:

@IBAction func HideKeyboard(sender: AnyObject) {
   YourKeyboardHere.resignFirstResponder()
}

这适用于所有类型的键盘。

答案 2 :(得分:-1)

这对我有用:

// Outlet to textfield, editing changed
@IBAction func textFieldEditingChanged(sender: UITextField) {
    if sender.text?.characters.count == 4 {
        view.endEditing(true)
    }
    // Optional if you don't want the user to paste in more than 4 characters
    else if sender.text?.characters.count > 4   {
        sender.text = nil
    }
}

我还建议您设置

textField.clearsOnBeginEditing = true 

所以当用户再次点击它时,textField就会被清除。

答案 3 :(得分:-2)

您应该使用textfield delegate shouldChangeCharactersInRange之类的内容,

 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{


if (textField.text.length == 4) {

    [textField resignFirstResponder];
}

return YES;
}

在斯威夫特,

    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {



        if textField.text?.characters.count == 4 {

            textField.resignFirstResponder()

        } 
    return true
}

希望这会有所帮助:)