textField输入完成后隐藏键盘
touchUpInside 事件要将总的View改为UIControl
//手机号输入框
@IBOutlet var text_phone: UITextField!
//密码输入框
@IBOutlet var text_pwd: UITextField!
//点击键盘 GO或者return时触发(接口方法)
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
//TextField失去焦点
text_phone.resignFirstResponder()
text_pwd.resignFirstResponder()
return true
}
//点击空白处让键盘消失(这个事件是视图总父的)
@IBAction func touchUpInside(_ sender: UIControl) {
//TextField失去焦点
text_phone.resignFirstResponder()
text_pwd.resignFirstResponder()
}
//输入完成后触发的事件(可以不用实现,没有多大用)
@IBAction func didEndOnExit(_ sender: UITextField) {
//TextField失去焦点
text_phone.resignFirstResponder()
text_pwd.resignFirstResponder()
}
//触摸事件函数,当一个或多个手指离开屏幕时触发(当手指离开输入框后键盘消失) 这个是实现重写的(可以不用实现,没有多大用)
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
//TextField失去焦点
text_phone.resignFirstResponder()
text_pwd.resignFirstResponder()
}
TextField输入验证
1.实现 ‘UITextFieldDelegate’接口
2.为textField设置 delegate监听
text_phone.delegate = self
text_pwd.delegate = self
3.
/// TextField每次输入的时候会被触发,返回true
/// - Parameters:
/// - textField: 用户输入的textField
/// - range: 例如粘贴或者选中一段文字所占用的范围
/// - string: 用户输入的字符
/// - Returns: 是否允许用户输入到。textfield
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
var xzText_len: Int = 11
//获取用户输入的总长度
let text1 = textField.text
let len = (text1?.count)! + string.count - range.length
//根据不同的输入框限制不同的条件
if text_pwd.isFirstResponder{
xzText_len = 12 //限制输入的长度为 12
let regex = "^[A-Za-z0-9]+$" //只能输入字母和数字的正则表达式
//使用表达式
let predicate = NSPredicate(format: "SELF MATCHES %@", regex)
//返回的匹配结果
let isValid = predicate.evaluate(with: string)
print(string)
//如果用户输入的总长度小于等于规定的长度
if len<=xzText_len{
return isValid
}else{
return false
}
}else if text_phone.isFirstResponder{
xzText_len = 11
return len<=xzText_len
}else{
return false
}
}
规定文本框只能输入汉字参考:
只能输入汉字
NSPredicate检索详情参考(可以用于判断某元素是否存在与数组中):
NSPredicate检索