如何为iOS中的UISearchBar设置最近的搜索历史记录下拉列表

时间:2015-10-24 10:04:13

标签: ios objective-c uitableview uisearchbar

我想为 UITableView 设置最近的搜索记录下拉列表。我使用UITableView

以编程方式实现了下拉列表

逻辑:
我的实施方法是在UISearchBar下方设置UISearchBar,然后点击viewdidload,它会弹出。 我最初在 -(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBarsearchbartext中隐藏了该表视图,取消隐藏了tableview。 我遇到了太多问题:

1。tapgestures为空时,不会启用返回按钮。在这种情况下,如果我必须再次取消/隐藏表视图,我必须依赖{{1 }。

2。再次点击searchbartext不会触发任何代表。唯一一次点击searchbartext时触发代表的时间是第一次点击它时它会调用-(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar

你们有没有其他解决方案/方法以比这更好的方式实现这个功能? 我们是否有任何自定义的UISearchBar近期历史记录下拉列表? 我已经在UISearchBarcocoacontrolscode4app中搜索了自定义cocoapods最近的历史记录下拉列表,因为这无法找到任何希望。 请帮帮我。

2 个答案:

答案 0 :(得分:1)

对于第一期,您可以在UISearchBar上添加类似这样的类别,当点击{{1}时,这将始终启用键盘上的return按钮}

UISearchBar

对于第二个问题,为什么不使用为每个输入的字符调用的@implementation UISearchBar (MyAddition) - (void)alwaysEnableSearch { // Loop around subviews of UISearchBar NSMutableSet *viewsToCheck = [NSMutableSet setWithArray:[self subviews]]; while ([viewsToCheck count] > 0) { UIView *searchBarSubview = [viewsToCheck anyObject]; [viewsToCheck addObjectsFromArray:searchBarSubview.subviews]; [viewsToCheck removeObject:searchBarSubview]; if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)]) { @try { // Force return key to be enabled [(UITextField *)searchBarSubview setEnablesReturnKeyAutomatically:NO]; } @catch (NSException *iException) { } } } } 委托方法。

作为旁注,this SO thread有一个示例代码来执行此操作。这可能会对你有帮助。

祝你好运!

答案 1 :(得分:0)

根据您最近的澄清,我正在重写可能的步骤。

  1. 保持标志/布尔以监视表视图是否隐藏。
  2. 在UISearchBar Delegate方法中检查serachbar的文本字段的[obj isFirstResponder]方法。 一个。 if firstResponder = yes - >显示histroy tableview或反之亦然。显示/隐藏完成后,在UISearchBar'文本字段上调用以下方法。   * [ searchbarobj textfield resignFirstResponder ]; * 湾如果 firstResponder =否--->什么都不做离开方法。