我已经阅读了很多解决方案,当我打开我的搜索视图时,如何关注搜索栏以使键盘显示,所有这些都是这样的
[searchBar becomeFirstResponder];
mine is
[self.searchDisplayController.searchBar becomeFirstResponder];
but I tried both.
现在,我尝试了这个,我还添加了一个
[self.searchDisplayController setActive:YES];
因为我正在使用SearchDisplayController,但到目前为止,我可以获得的最佳结果是将光标放在搜索栏上,uitableview上有覆盖,但仍然没有键盘。
如果我运行模拟器,我可以使用计算机的键盘在搜索栏上输入,但在iPhone上我无法做任何事情。
如果您想查看我的代码:http://nopaste.info/39fcda4771.html 焦点应该在viewDidLoad方法
中执行再次感谢。
答案 0 :(得分:7)
我在textFieldDidBeginEditing上显示了搜索栏:(UITextField *)textField委托方法。
键盘未显示。所以第一次辞去textField作为firstResponder。 即。
[textField resignFirstResponder];
然后调用延迟方法
[self performSelector:@selector(callSearchBar) withObject:NULL afterDelay:0.2];
其中
-(void)callSearchBar{
[self.searchDisplayController setActive: YES animated: YES];
self.searchDisplayController.searchBar.hidden = NO;
[self.searchDisplayController.searchBar becomeFirstResponder];
}
它有效
答案 1 :(得分:5)
使用UISearchBarDelegate并在头文件中声明searchBar,就像这样......
@interface mySearchScreen : UIViewController <UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate> {
UITableView *myTableView;
NSMutableArray *tableData;
UISearchBar *sBar;//search bar
并在loadView中声明您的搜索栏
- (void)loadView {
[super loadView];
sBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0,0,320,30)];
sBar.delegate = self;
[self.view addSubview:sBar];
myTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 31, 300, 400)];
myTableView.delegate = self;
myTableView.dataSource = self;
[self.view addSubview:myTableView];
tableData = [[NSMutableArray alloc]init];
}
然后在viewDidAppear
中的搜索栏上使用becomeFirstResponder- (void)viewDidAppear:(BOOL)animated {
//ensure the keyboard comes up from the start
[sBar becomeFirstResponder];
[super viewDidAppear:animated];
}
答案 2 :(得分:3)
序列问题
[self.searchDisplayController setActive:YES animated:YES];
[self.searchDisplayController.searchBar becomeFirstResponder];
如果没有运气,请检查搜索显示控制器的代表是否已链接。还值得检查搜索栏的色调。
答案 3 :(得分:3)
在simulator
上,确保单击Toggle Software Keyboard
以使用模拟器的键盘,如图中所示。