我有UISearchBar
我在我的viewDidLoad
中实施:按代码。
我也设置了UISearchBarDelegate
。
现在我想限制用户输入超过5个字符所以我实现了这个委托方法
- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
NSLog(@"shouldChangeTextInRange");
if (searchBar.text.length >= 5)
return NO;
return YES;
}
工作正常。
问题是当我输入最多5个字符&尝试使用键盘Backspace字符,它不起作用。
此外,如果我按下键盘上的搜索按钮,searchBarSearchButtonClicked
:没有被调用。
我目前正在使用
XCode版本:3.2.5
iOS SDK:4.2
答案 0 :(得分:2)
您应该对新文字长度(如果应用建议的文字更改,您将拥有的文字的长度)进行测试,不实际文字长度。
为此,您首先需要计算新文本:
- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if ([text isEqualToString:@"\n"])
return YES; // accept validation button
NSString* newText = [searchBar.text stringByReplacingCharactersInRange:range withString:text];
if (newText.length >= 5)
return NO;
return YES;
}
答案 1 :(得分:0)
由于您的代码,您无法使用退格键。键入5个字符后,您的searchBar卡住了。改为使用它:
if ([textField.text length] + [string length] - range.length > 5) {
return NO;
}