今天测试非要给一个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()
}
}
网友评论