专注于UISearchBar但键盘没有出现

时间:2011-03-29 14:52:46

标签: uitableview uisearchbar uisearchdisplaycontroller becomefirstresponder

我已经阅读了很多解决方案,当我打开我的搜索视图时,如何关注搜索栏以使键盘显示,所有这些都是这样的

[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方法

中执行

再次感谢。

4 个答案:

答案 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以使用模拟器的键盘,如图中所示。

enter image description here