无法访问 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 方法的主要内容,如果未能解决你的问题,请参考以下文章

如何使 UISearchBar 的书签图标可访问?

安装FileZilla后外网无法访问ftp解决方法

无法中止进程无法访问操作拒绝访问

电脑打开FTP文件夹出错提示Windows无法访问解决方法

无法与 UITableView 中的 UISearchBar 交互

在 tableHeaderView iOS 7 中使用 UISearchBar 访问错误