11

我已经阅读了很多关于如何在打开搜索视图时聚焦搜索栏以使键盘出现的解决方案,所有这些都是这样的

[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

4 回答 4

8

I was showing searchbar on textFieldDidBeginEditing:(UITextField *)textField delegate method.

Keyboard was not showing. So for that first resign textField as firstResponder. i.e.

[textField resignFirstResponder];

Then call method with delay

[self performSelector:@selector(callSearchBar) withObject:NULL afterDelay:0.2];

Where

-(void)callSearchBar{
[self.searchDisplayController setActive: YES animated: YES]; 
self.searchDisplayController.searchBar.hidden = NO;
[self.searchDisplayController.searchBar becomeFirstResponder];

}

It works

于 2013-05-22T00:24:54.340 回答
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];

}

于 2011-05-12T10:38:56.583 回答
3

在 上simulator,确保单击Toggle Software Keyboard以使用模拟器的键盘,如图所示。

在此处输入图像描述

于 2015-03-15T10:05:15.787 回答
3

顺序很重要

[self.searchDisplayController setActive:YES animated:YES];
[self.searchDisplayController.searchBar becomeFirstResponder];

如果没有运气,则检查搜索显示控制器的委托是否已链接。还值得检查搜索栏的色调。

于 2014-11-03T23:18:27.200 回答