[英]Hide keyboard automatically in swift
输入四个字符后,有没有办法在swift中自动隐藏键盘? 我实际上有一个隐藏键盘的代码,但用户必须单击屏幕上的任意位置。 这是代码:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
提前致谢!
如果我正确回答了您的问题,请考虑以下示例代码:
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 中输入任何文本并且键盘将再次隐藏。
结果将是:
希望这会有所帮助。
这是隐藏键盘或数字键盘的最简单方法。 首先你需要一个按钮,你需要让它和屏幕一样大。把它发送到场景的后面,并把它连接到一个 IBAction。然后你的代码应该是这样的:
@IBAction func HideKeyboard(sender: AnyObject) {
YourKeyboardHere.resignFirstResponder()
}
这应该适用于所有类型的键盘。
这对我有用:
// 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 时,它会被清除。
您应该使用文本字段委托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
}
希望这会有所帮助:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.