关于UITextFiled的完成回调方法 TextFieldDidChange

今天测试非要给一个textFiled加上字数限制功能,不能让其超过多少个字符,然后我看了一下貌似UITextFiled没有完成回调的代理方法.所以我用shouldChangeCharactersInRange这个方法

    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
        if textField.tag == 101{
            if (textField.text?.characters.count)! + string.characters.count > 100{
                showHint("标题最多输入100个字符")
                let tempStr = textField.text! + string
                textField.text = (tempStr as NSString).substringToIndex(100)
                textField.resignFirstResponder()
                return false
            }
        }
        return true
    }

测试下来粘贴进来和直接打字的测试OK了,但是在联想输入的不调用这个回调方法.所以上网百度了一下发现可以这样做
先给textFiled添加一个相应方法,然后实现这个方法就可以了,对于直接输入的,粘贴进去的,联想输入的都可以响应到

titleTextFiled.addTarget(self, action: Selector("textFieldDidChange:"), forControlEvents: .EditingChanged)

    func textFieldDidChange(sender:UITextField){
        if sender.text?.characters.count > 100{
            showHint("标题最多输入100个字符")
            sender.text = (sender.text! as NSString).substringToIndex(100)
            sender.resignFirstResponder()
        }
    }

你可能感兴趣的:(关于UITextFiled的完成回调方法 TextFieldDidChange)