我希望能够搜索没有任何字符的字符串。问题是,当UISearchBar中没有任何内容写入时,默认键盘不会显示搜索按钮。
有什么想法吗?
谢谢, 马库斯
答案 0 :(得分:19)
幸运的是,我刚刚正在编写完全正确的代码。这有点像黑客攻击,但你可以找到嵌入在UISearchBar中的UITextField,然后关闭enablesReturnKeyAutomatically
:
UITextField *searchBarTextField = nil;
for (UIView *subview in searchBar.subviews)
{
if ([subview isKindOfClass:[UITextField class]])
{
searchBarTextField = (UITextField *)subview;
break;
}
}
searchBarTextField.enablesReturnKeyAutomatically = NO;
答案 1 :(得分:7)
Daniels的回答非常有效,直到 iOS 7 。
iOS 7更新
- (void)searchBarTextDidBeginEditing:(UISearchBar *) bar
{
UITextField *searchBarTextField = nil;
NSArray *views = ([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0f) ? bar.subviews : [[bar.subviews objectAtIndex:0] subviews];
for (UIView *subview in views)
{
if ([subview isKindOfClass:[UITextField class]])
{
searchBarTextField = (UITextField *)subview;
break;
}
}
searchBarTextField.enablesReturnKeyAutomatically = NO;
}
答案 2 :(得分:1)
键入*并将其用作程序中的占位符“”(无)。
答案 3 :(得分:0)
搜索""
就像搜索nil / NULL一样:查询将返回所有空或空的条目。
*
是大多数搜索标记中使用的通配符字符,它将返回所有匹配。
答案 4 :(得分:0)
。没有字符就很难搜索字符串... 所以你需要继续工作
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
//write code here
}
它会自动运行
答案 5 :(得分:0)
这就是我所做的
要在退格键上移除键盘直到空白:
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if ([searchText isEqualToString:@""]) {
[searchBar resignFirstResponder];
}
}
您还需要将您的uisearchbar中的uitextfield设置为同一个委托,记得添加到此委托(在我的代码的上下文中,委托是自己的)
for (UIView *view in searchBar.subviews){
if ([view isKindOfClass: [UITextField class]]) {
UITextField *tf = (UITextField *)view;
tf.delegate = self;
break;
}
}
然后将这些添加到您的代理
- (void)searchBarCancelButtonClicked:(UISearchBar *) aSearchBar {
[aSearchBar resignFirstResponder];
}
-(BOOL)textFieldShouldClear:(UITextField *)textField
{
[self performSelector:@selector(searchBarCancelButtonClicked:) withObject:textField.superview afterDelay: 0.1];
return YES;
}
当其中任何一个触发时,执行搜索“”字符串