ios-UITextField-输入字符校验

有时在用户需要提交一些修改的时候,我们需要校验他提交的内容的长度或者合法性,当然这些校验可以放到后台,,以输入电话号码为例:

//先为textField设置一个变化的监听,
text.addTarget(self, action: #selector(textDidChange), forControlEvents: .EditingChanged)

//监听时产生校验行为
校验用户输入的长度
func textDidChange(textField:UITextField) {
    if let _ = textField.text {
      // 不使用拼音的时候就校验
      if let positionRange = textField.markedTextRange {
        if let _ = textField.positionFromPosition(positionRange.start, offset: 0) {
          
        } else {
          self.checkTextFieldLen(textField)
        }
      } else {
        self.checkTextFieldLen(textField)
      }
    }
    checkTextFieldVegality(textField)
  }

//是否超出长度
func checkTextFieldLen(textField:UITextField) {
    //your code here
    let texts:String = textField.text!
    let ss = texts as NSString
    var len = 0
    len = telLen
    if texts.characters.count > len {
      print("too long")
      textField.text = ss.substringToIndex(telLen)
    }
  }

  // 是否合法
  func checkTextFieldVegality(textField:UITextField) {
      if isValidTel(textField.text!) == false {
        print("非法字符串")
      }
  }

func isValidTel(str:String) -> Bool {
    let format = "^1[0-9]*$"
    let predicate = NSPredicate(format: "SELF MATCHES %@",format)
    let isValid = predicate.evaluateWithObject(str)
    return isValid
  }

你可能感兴趣的:(ios-UITextField-输入字符校验)