UITextField 和 UITextView 设置输入字数限制
错误示例:#####
在他们的代理方法中限制输入字数不超过10位
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (range.location < 10) {
return YES;
} else {
return NO;
}
}
And
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if (range.location < 10) {
return YES;
} else {
return NO;
}
}
这种方法实现的效果,正常情况下是没问题的,但是,可以利用输入法的提示输入打破10个字符,这时无法再进行输入操作和单个删除操作,只能进行多选删除和全选删除操作。
UITextView 的解决办法:#####
实现以下代理方法
- (void)textViewDidChange:(UITextView *)textView
{
if (textView.text.length > 10) {
textView.text = [textView.text substringToIndex:10];
}
}
UITextField 的解决办法:#####
1、给 UITextField 添加触发事件
[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
2、实现自定义方法
- (void)textFieldDidChange:(UITextField *)textField
{
if (textField.text.length > 10) {
textField.text = [textField.text substringToIndex:10];
}
}