在使用输入框时,不管是searchBar输入,还是textField输入,又或是textView输入,都会涉及到字数的输入限制。在处理输入时的限制时,还要考虑到复制粘贴时的字数限制,避免只在输入时做了限制,而采取复制粘贴时没有进行限制。
searchBar限制
// 搜索词输入限制在32位
- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
NSString *searchString = [searchBar.text stringByReplacingCharactersInRange:range withString:text];
if (searchString.length > 32)
{
// 避免复制粘贴时限制
searchBar.text = [searchString substringToIndex:32];
return NO;
}
return YES;
}
// textView输入限制
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
// 字数限制
NSString *tempString = [textView.text stringByReplacingCharactersInRange:range withString:text];
if (tempString.length > 12)
{
textView.text = [textView.text substringToIndex:12]; // 避免复制粘贴时超过限制
return NO;
}
return YES;
}
// textField输入限制
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
// 字数限制
NSString *tempString = [textField.text stringByReplacingCharactersInRange:range withString:string];
if (tempString.length > 12)
{
textView.text = [textField.text substringToIndex:12]; // 避免复制粘贴时超过限制
return NO;
}
return YES;
}
除了通过字符长度控制外,还可以通过range的location进行控制,如:
// textField输入限制
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (range.location > 12 - 1)
{
currentTextView.text = [tempStr substringToIndex:12]; //避免复制粘贴时超过限制
return NO;
}
return YES;
}