Iphone 键盘在实现UISearchBar委托方法后没有响应
我有一个Iphone 键盘在实现UISearchBar委托方法后没有响应,iphone,uisearchbar,uisearchbardelegate,Iphone,Uisearchbar,Uisearchbardelegate,我有一个UISearchBar,我在我的viewDidLoad:按代码实现了它。 我还设置了UISearchBarDelegate 现在我想限制用户输入超过5个字符,所以我实现了这个委托方法 - (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { NSLog(@"shouldChangeTextInRange"
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个字符时&尝试使用键盘退格字符,它不起作用
现在,如果我按下键盘上的搜索按钮,searchBarSearchButtonClicked
:将不会被调用
我目前正在使用
XCode版本:3.2.5
iOS SDK:4.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;
}
由于代码的原因,您不能使用退格。键入5个字符后,搜索栏被卡住。改用它:
if ([textField.text length] + [string length] - range.length > 5) {
return NO;
}
但是为什么searchBarSearchButtonClicked:在我到达结束字符时没有被调用?如果不实现
searchBar:shouldChangeTextInRange:
,它调用是否正确?无论如何,您可能需要返回YES
还需要if([text IsequalString:@“\n”])
。是的,如果我没有实现shouldChangeTextInRange,它将被调用:然后我编辑了我的答案,检查并验证它是否解决了您的问题。但是为什么searchBarSearchButtonClicked:在我到达结束字符时没有被调用?