如何在iOS中为UISearchBar设置最近的搜索历史下拉列表
我想为如何在iOS中为UISearchBar设置最近的搜索历史下拉列表,ios,objective-c,uitableview,uisearchbar,Ios,Objective C,Uitableview,Uisearchbar,我想为UISearchbar设置最近的搜索历史下拉列表。我使用UITableView 逻辑: 我是如何实现的,方法是在UISearchBar的正下方设置一个UITableView,然后单击UISearchBar它将弹出。 我最初在viewdidload和 -(BOOL)searchBar应该开始编辑:(UISearchBar*)searchBaram取消隐藏tableview。 我在这方面面临太多问题: 1.当searchbartext为空时,返回按钮不启用。在这种情况下,如果我必须再次取消/隐
UISearchbar
设置最近的搜索历史下拉列表。我使用UITableView
逻辑:我是如何实现的,方法是在
UISearchBar
的正下方设置一个UITableView
,然后单击UISearchBar
它将弹出。
我最初在viewdidload
和
-(BOOL)searchBar应该开始编辑:(UISearchBar*)searchBar
am取消隐藏tableview。
我在这方面面临太多问题:
1.当searchbartext
为空时,返回按钮不启用。在这种情况下,如果我必须再次取消/隐藏表格视图,我必须依赖于TapPictures
2.再次单击searchbartext
不会触发其任何委托。它触发学员单击searchbartext
的唯一时间是第一次单击它时,然后调用-(BOOL)searchBar shouldBeginediting:(UISearchBar*)searchBar
你们有没有比这更好的解决方案/方法来实现这一功能??
我们是否有定制的UISearchBar
最近历史记录下拉列表??我在
cocoacontrols
、code4app
和cocoapods
中搜索了一个自定义的UISearchBar
最近历史下拉列表,但没有找到任何希望。
请帮我解决这个问题。根据您最近的澄清,我正在重新编写可能的步骤
对于您的第一期,您可以在
UISearchBar
上添加类似的类别,当点击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) {
}
}
}
}
对于第二期,为什么不使用shouldChangeTextInRange:
委托方法,该方法将为每个输入的字符调用
作为旁注,我们有一个示例代码来实现这一点。这可能对你有帮助
祝你好运 我可以向你解释这个场景。假设我单击SearchBartext字段,它将触发代理,但再次单击SearchBartext字段不会触发代理。这就是我的问题。你想在点击搜索栏时显示/隐藏tableview。对吗?没错。我想用键盘上的返回键实现同样的功能,但遗憾的是,当UISearchBar中没有文本输入时,返回键被禁用。谢谢:)对于第二个问题,我想解决的方法是当searchbartextfield为空时,我第二次单击searchbartextfield,我想关闭tableview。这就是为什么我没有使用shouldChangeTextInRange委托方法的原因。我明白了。您是否尝试了
触摸开始:
方法?当您触摸搜索栏时应该会调用它,因为它的超类是UIResponder
。而且,我认为这个答案值得一次投票:)!:-)非常感谢。如果您能使用触摸开始:
找到答案,请告诉我。如果不是的话,我很乐意投入时间帮助你。