Сосредоточьтесь на UISearchBar, но клавиатура не появляется - PullRequest
11 голосов
/ 29 марта 2011

Я прочитал множество решений о том, как сфокусировать панель поиска, чтобы при открытии окна поиска появлялась клавиатура, и все это выглядит так

[searchBar becomeFirstResponder];
mine is 
[self.searchDisplayController.searchBar becomeFirstResponder];
but I tried both.

Теперь я попробовал это, и я также добавил

[self.searchDisplayController setActive:YES];

, потому что я использую SearchDisplayController, но пока лучший результат, который я могу получить, это иметь курсор на панели поиска, удобный вид с наложением на него, но все еще без клавиатуры.

Если я запускаю симулятор, я могу печатать на панели поиска с клавиатуры моего компьютера, но на iPhone я ничего не могу сделать.

Если вы хотите взглянуть на мой код: http://nopaste.info/39fcda4771.html фокус должен быть выполнен в методе viewDidLoad

Еще раз спасибо.

Ответы [ 4 ]

8 голосов
/ 22 мая 2013

Я показывал панель поиска на 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];

}

Работает

5 голосов
/ 12 мая 2011

Используйте 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];

}

, а затем используйте сталFirstResponder на панели поиска в viewDidAppear

- (void)viewDidAppear:(BOOL)animated {
//ensure the keyboard comes up from the start
[sBar becomeFirstResponder];    
[super viewDidAppear:animated];

}

3 голосов
/ 15 марта 2015

На simulator убедитесь, что вы нажимаете Toggle Software Keyboard, чтобы использовать клавиатуру симулятора, как вы можете видеть на изображении.

enter image description here

3 голосов
/ 04 ноября 2014

Последовательность имеет значение

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

Если не повезло, то проверьте, связан ли делегат контроллера дисплея поиска.Также стоит проверить цвет оттенка панели поиска.

...