iPhone:UISearchBar如何搜索“”字符串?

时间:2010-10-02 18:03:16

标签: ios iphone objective-c ipad uisearchbar

我希望能够搜索没有任何字符的字符串。问题是,当UISearchBar中没有任何内容写入时,默认键盘不会显示搜索按钮。

有什么想法吗?

谢谢, 马库斯

6 个答案:

答案 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;
}

当其中任何一个触发时,执行搜索“”字符串

相关问题