快速检查文本字段输入

Wil*_*son 4 character textfield swift

我一直在努力寻找如何在用户输入时检查文本字段的输入.

如果用户键入单词,则应根据某些定义的规则更改标签和图像.

我的代码正在运行,但我总是落后一步.(因为它总是在输入下一个字符之前读取内容.

如果它只是为了检查长度我可以使用countElements(textfield)+ 1,但我希望它还表明用户在键入时不能使用某些字符,因此这对于检查不需要的字符是行不通的.

我假设我使用的功能不是正确的"shouldChangeCharacters".所以我对使用什么感到有点迷茫.有没有办法读取println或NSLog命令返回到插座?

    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

        let passwordcheck = UserPasswordTextField.text

       
        if UserPasswordTextField.isFirstResponder() {
            if isValidPassword(passwordcheck) {
            PWimg.image = UIImage(named: "passwordapprovedicon")
            } else if passwordcheck.isEmpty {
                PWimg.image = UIImage(named: "passwordiconwrong")
            } else {
            PWimg.image = UIImage(named: "passwordiconwrong")
            }
}

     func isValidPassword(testStr2:String) -> Bool {
        println("validate password: \(testStr2)")
        
        let passwordRegEx = "[A-Z0-9a-z._%+-:/><#]{6,30}"
        
        if let passwordTest = NSPredicate(format: "SELF MATCHES %@", passwordRegEx) {
            return passwordTest.evaluateWithObject(testStr2)
        }
        
        return false       
Run Code Online (Sandbox Code Playgroud)

Tee*_*ppa 9

UIControlEventEditingChanged从文本字段中侦听事件.注册他们或

  1. 界面生成器:从文本字段拖动到文件,然后选择操作类型"编辑已更改"

  2. 以下代码:

    override func viewDidLoad() {
        super.viewDidLoad()
        // ... 
        textField.addTarget(self, action:"edited", forControlEvents:UIControlEvents.EditingChanged)
    }
    
    func edited() {
       println("Edited \(textField.text)")
    }
    
    Run Code Online (Sandbox Code Playgroud)