我是Objective C的新手,我的tableView中有搜索栏。我的searchBar文本字段中不需要限制输入,例如我不需要输入超过20个符号,我该怎么做?
在
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
我试着像
那样写smthsearchBar.text.lenght == 20;
但是没用[/ p>
我该怎么做?或者在长度> 20时更容易关闭键盘。谢谢。
答案 0 :(得分:6)
您可以使用shouldChangeCharactersInRange:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
return ([textField.text length] + [string length] - range.length > 20) ? NO : YES;
}
修改强> 抱歉。对于UISearchBar,您必须使用
- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
return ([searchBar.text length] + [text length] - range.length > 20) ? NO : YES;
}
修改强> 见下面的评论
- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
return ([searchBar.text length] + [text length] - range.length <= 20);
}
答案 1 :(得分:2)
扩展另一个答案,因为你是Objective-C的新手
1.您需要在视图控制器中实现UISearchBarDelegate协议。
@interface ViewController : UIViewController <UISearchBarDelegate>
2。您需要分配代理
searchBar.delegate = self
3。实现另一篇文章中指定的委托回调
如果你想要隐藏键盘超过20个字符,你可以通过调用
在同一个委托函数中完成[searchBar resignFirstResponder];
答案 2 :(得分:1)
对于未来的读者,在Swift 4中:
func searchBar(_ searchBar: UISearchBar, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
let totalCharacters = (searchBar.text?.appending(text).count ?? 0) - range.length
return totalCharacters <= 20
}