如果没有焦点,如何在SearchBar中单击“取消”按钮一次

时间:2016-04-26 06:05:54

标签: ios objective-c iphone uinavigationbar uisearchbar

我在NavigationBar中添加了SearchBar视图。

[self.navigationController.view addSubview:self.searchBar];

我正在搜索...

enter image description here

搜索已完成......

enter image description here

如果我想取消(删除)SearchBar,我必须点击取消按钮两次以删除SearchBar。 (一次用于焦点SearchBar,一次用于点击取消)。

如何在SearchBar中轻按一下取消(x)按钮(明文按钮)? 或SearchBar如何始终关注? (通过这种方式,我可以点击取消,只需轻轻一按TapB)

4 个答案:

答案 0 :(得分:1)

搜索后不要关闭键盘

  
    

删除此行[searchBar resignFirstResponder]

  

它会起作用

enter image description here

答案 1 :(得分:0)

将搜索栏委托方法实现为:

- (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar {
        self.navigationController.navigationBarHidden = NO;
        [mySearchBar setAlpha:0.0];
    }

希望你能做到这一点。您也可以直接将其添加到导航控制器本身,如果您需要&然后单独显示/隐藏searchBar

答案 2 :(得分:0)

-(void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller
{
    controller.active = YES;

    [self.view addSubview:controller.searchBar];
    [self.view bringSubviewToFront:controller.searchBar];
}

- (void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView  {

    tableView.frame = self.archiveListTblView.frame;
}

- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller
{
    controller.active=NO;

    [self.view addSubview:controller.searchBar];
}

答案 3 :(得分:0)

搜索栏已从第一响应者中退出后,取消按钮将被禁用。

因此,您应该手动启用“取消”按钮。

尝试一下:

[searchBar resignFirstResponder];

[(UIButton *)[searchBar valueForKey:@"_cancelButton"] setEnabled:YES];