UITextField 和 UITextView 設(shè)置輸入字?jǐn)?shù)限制
錯(cuò)誤示例:#####
在他們的代理方法中限制輸入字?jǐn)?shù)不超過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;
}
}
這種方法實(shí)現(xiàn)的效果将硝,正常情況下是沒問題的陷猫,但是奠支,可以利用輸入法的提示輸入打破10個(gè)字符抬探,這時(shí)無法再進(jìn)行輸入操作和單個(gè)刪除操作组橄,只能進(jìn)行多選刪除和全選刪除操作硫戈。
UITextView 的解決辦法:#####
實(shí)現(xiàn)以下代理方法
- (void)textViewDidChange:(UITextView *)textView
{
if (textView.text.length > 10) {
textView.text = [textView.text substringToIndex:10];
}
}
UITextField 的解決辦法:#####
1锰什、給 UITextField 添加觸發(fā)事件
[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
2、實(shí)現(xiàn)自定義方法
- (void)textFieldDidChange:(UITextField *)textField
{
if (textField.text.length > 10) {
textField.text = [textField.text substringToIndex:10];
}
}