【发布时间】:2015-03-13 04:03:49
【问题描述】:
我在 tableviewcontroller 中设置了一个 searchBar。我已经引用了这个类似的问题UISearchBar cannot become first responder after UITableView did re-appear,但我仍然无法将其设置为第一响应者。 在 .h 文件中:
@property (strong, nonatomic) UISearchController *searchController;
@property (strong, nonatomic) IBOutlet UISearchBar *searchBar;
查看didload:
self.searchController = [[UISearchController alloc]initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.hidesNavigationBarDuringPresentation = NO;
self.searchController.searchBar.frame = CGRectMake(self.searchController.searchBar.frame.origin.x, self.searchController.searchBar.frame.origin.y, self.searchController.searchBar.frame.size.width, 44.0);
self.tableView.tableHeaderView = self.searchController.searchBar;
在 viewDidAppear 中:
-(void)viewDidAppear:(BOOL)animated {
[self.searchController setActive:YES];
[self.searchController.searchBar becomeFirstResponder];
[super viewDidAppear:animated];
}
当我转到视图时,searchBar 动画,但没有出现键盘。
【问题讨论】:
-
如果你用 dispatch_after() 稍微延迟
becomeFirstResponder怎么办? -
在
super viewDidAppear之前调用它有什么原因。 -
我试着把它放在前后没有运气。搜索栏是以编程方式创建的,是否有一些我可能错过的明显连接?
标签: ios objective-c uisearchbar first-responder uisearchcontroller