输入四个字符后,有没有办法在swift中自动隐藏键盘?我实际上有一个隐藏键盘的代码,但用户必须单击屏幕上的任何位置。这是代码:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
提前致谢!
答案 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中输入任何文字,键盘会再次隐藏。
结果将是:
希望这会有所帮助。
答案 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
}
希望这会有所帮助:)