10

He leído tantas solución sobre cómo puedo enfocar una barra de búsqueda para que aparezca el teclado cuando abro mi punto de vista de búsqueda, y todos los que son asíEnfoque a la UISearchBar pero el teclado no aparece

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

Ahora, he intentado esto, y también he añadido un

[self.searchDisplayController setActive:YES]; 

porque estoy usando un SearchDisplayController, pero hasta ahora el mejor resultado que puedo tener es tener el cursor en la barra de búsqueda, el UITableView con una superposición en él, pero todavía no hay teclado.

Si ejecuto el simulador, puedo escribir en la barra de búsqueda con el teclado de mi computadora, pero en un iPhone no puedo hacer nada.

Si desea dar un aspecto de mi código: http://nopaste.info/39fcda4771.html el enfoque debe ser ejecutado en el método viewDidLoad

Gracias de nuevo.

+0

mismo problema que estoy enfrentando, mi barra de búsqueda está enfocada. El cursor de simulación parpadea pero el teclado no se muestra. ¿Ha encontrado la solución –

Respuesta

5

Uso del UISearchBarDelegate y declarar la barra de búsqueda en el archivo de cabecera como esta ...

@interface mySearchScreen : UIViewController <UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate> { 

UITableView *myTableView; 
NSMutableArray *tableData; 
UISearchBar *sBar;//search bar 

y declarar la barra de búsqueda en 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]; 

}

y luego usar becomeFirstResponder en su barra de búsqueda en viewDidAppear

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

}

+2

que no debería [super viewDidAppear: animated]; llamar primero que [sBar becomeFirstResponder]; – yunas

+0

funciona para mí, llamo a la barra de búsqueda activa después de '[super viewDidAppear: animated]' – c9s

7

estaba mostrando barra de búsqueda en textFieldDidBeginEditing: método delegado (UITextField *) textField.

El teclado no se veía. Entonces, para eso, primero resigne textField como firstResponder. es decir

[textField resignFirstResponder]; 

Entonces llamar al método con retraso

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

Dónde

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

}

funciona

+0

Esto finalmente funcionó para mí! Tener un voto favorable. ¿Alguna idea de por qué tendrías que hacer esto '[self.searchDisplayController.searchBar becomeFirstResponder];' en lugar de '[self.searchBar becomeFirstResponder];'? – scottmrogowski

+0

Esto funciona bien, pero recomendaría simplemente hacer '[self callSearchBar]' dentro del método 'viewDidAppear:'. No sabemos con certeza cuánto tiempo puede tomar la transición del controlador, por lo que puede terminar con un efecto desagradable y/o artefactos imprevistos en la tabla si su retraso es demasiado corto para enfocar la 'barra de búsqueda '. +1 sin embargo :-) – jweyrich

+0

@scottmrogowski Tienes que usar 'self.searchDisplayController.searchBar' porque probablemente hayas conectado' UISearchDisplayController' a tu 'UITableViewController', por lo que no has tenido una variable searchBar en tu' UITableViewController " clase, pero puede obtener esta referencia a través de la variable 'UISearchDisplayController'. –

3

La secuencia materia

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

Si no hay suerte, verifique si el delegado del controlador de visualización de búsqueda está vinculado. También vale la pena verificar el color del tinte de la barra de búsqueda.

3

En el simulator, asegúrese de hacer clic en Toggle Software Keyboard para usar el teclado del simulador como puede ver en la imagen.

enter image description here

Cuestiones relacionadas