如何限制UISearchBar中的输入?

Rom*_*nok 0 objective-c uisearchbar ios

我是Objective C的新手,我的tableView中有搜索栏.我的searchBar文本字段中不需要限制输入,例如我不需要输入超过20个符号,我该怎么做?

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
Run Code Online (Sandbox Code Playgroud)

我试着写像smth

searchBar.text.lenght == 20;
Run Code Online (Sandbox Code Playgroud)

但这没用

我怎么能这样做?或者当长度> 20时更容易关闭键盘.谢谢.

mat*_*ias 6

你可以用 shouldChangeCharactersInRange:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
   return ([textField.text length] + [string length] - range.length > 20) ? NO : YES;
}
Run Code Online (Sandbox Code Playgroud)

编辑: 对不起.对于UISearchBar,您必须使用

- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
   return ([searchBar.text length] + [text length] - range.length > 20) ? NO : YES;
}
Run Code Online (Sandbox Code Playgroud)

编辑: 请参阅下面的评论

- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
   return ([searchBar.text length] + [text length] - range.length <= 20);
}
Run Code Online (Sandbox Code Playgroud)

  • 只是风格上的事情:不:是有点难看。为什么不测试 &lt;= 20 并删除 ?否:是 (2认同)