无法访问 UISearchBar 方法
Posted
技术标签:
【中文标题】无法访问 UISearchBar 方法【英文标题】:Cannot Access UISearchBar Methods 【发布时间】:2014-06-26 09:36:43 【问题描述】:我正在尝试为 ios 应用中的表格视图设置搜索栏。表视图已设置,搜索栏也已设置。我不能使用 XIB/Storyboard 文件 - 不幸的是,所有教程都包含其中一个......现在的问题是,我不能使用任何 UISearchBar 函数,例如 textDidBeginEditing 等。
SearchBar的.h文件声明(我在.h文件中加载了UISearchDisplayDelegate)
@property (nonatomic,strong) UISearchBar IBOutlet *searchBar;
.m文件的ViewDidLoad中SearchSearchBar的初始化:
self.searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 320, 44)];
[self.view addSubview:self.searchBar];
//DIsmiss Keyboard
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
dismissKeyboard 方法的缺失部分(有效):
- (void)dismissKeyboard
//Keyboard Hiding
[_searchBar resignFirstResponder];
这是我在测试项目中使用的另外两种方法(用于搜索和重新加载视图),它们在那里工作:
-(void) filterContentForSearchText:(NSString *)searchText scope:(NSString *)scope
NSLog(@"Search Clicked");
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@", searchText];
self.searchResults = [self.array filteredArrayUsingPredicate:predicate];
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)
searchString
[self filterContentForSearchText:searchString scope:[[self.searchDisplayController.searchBar scopeButtonTitles]objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
return YES;
我真的很绝望,因为所有使用 textEdit 或其他东西(您显然需要搜索)的方法都不起作用,我不知道为什么,请帮助我!
【问题讨论】:
【参考方案1】:-
如果您不使用情节提要/笔尖,则不需要在属性声明中使用
IBOutlet
关键字
您没有将 self 指定为您的 UISearchBar
的委托,因此不会调用委托方法
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)
是UISearchDisplayDelegate
协议的一种方法,但您没有提到您使用的是UISearchDisplayController
。否则,将永远不会调用此委托方法。您需要为不带显示控制器的 UISearchBar
实现的委托是 UISearchBarDelegate。
【讨论】:
哇,非常感谢帮助我!如何使用 UISearchDisplayController?现在,如果我点击屏幕,应用程序崩溃说 ::::::::: 014-06-26 12:12:35.995 SAPRetailEx_SAP[28898:60b] -[UITapGestureRecognizer resignFirstResponder]: unrecognized selector sent to instance 0x151b0500 这是关于如何使用UISearchDisplayController
的一个很好的答案:***.com/a/18719797/396578 崩溃表明您尝试在UITapGestureRecognizer
的实例上调用resignFirstResponder
而不是UITextField
) ...最好在此处设置断点并检查使用的对象。
好的,我会的,非常感谢您的努力! ;)以上是关于无法访问 UISearchBar 方法的主要内容,如果未能解决你的问题,请参考以下文章