ios-swift-TextField

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检索

正则表达式参考(正则表达式大全)

猜你喜欢

转载自blog.csdn.net/wa172126691/article/details/80321117