2010-12-07 28 views
5

Tengo un UISearchBar anidado como un UIBarButtonItem dentro de una UIToolbar. La funcionalidad básica funciona, pero el botón cancelar y la barra de alcance se niegan a mostrar. Intenté habilitarlos en el constructor de interfaces, y también intenté llamar manualmente al [searchBar setShowsCancelButton:YES], pero ninguno de los dos métodos funciona. ¿Algunas ideas?UISearchBar dentro de una UIToolbar no mostrará el botón cancelar

Esto está en un iPad. Intenté en iOS 3 y tampoco funciona en 4.2.

Respuesta

3

Simplemente has tocado una limitación sobre cómo funciona UISearchBar. Una solución consiste en aplicar capas a UISearchBar sobre la barra de UITool en lugar de tenerla realmente viva en la barra de herramientas. Esto funciona visualmente porque una barra de búsqueda está pintada como una barra de herramientas, sus gradientes son los mismos.

11

Debe ajustar UISearchBar con otra vista.

UISearchBar *searchBar = [UISearchBar new]; 
UIView *searchBarContainer = [[UIView alloc] initWithFrame:searchBar.frame]; 
[searchBarContainer addSubview:searchBar]; 
UIBarButtonItem *searchBarItem = 
    [[UIBarButtonItem alloc] initWithCustomView:searchBarContainer]; 
0

¿Es realmente necesario utilizar un botón Cancelar en una barra de búsqueda? Simplemente use el método textDidChange para ver si la cadena se ha borrado y use eso para hacer lo mismo que cancelaría.

+1

por lo que está diciendo que cada vez que el usuario borre el último carácter, el teclado debería cerrar y editar el final? Eso parece un comportamiento presuntuoso por parte de la aplicación. – SG1

Cuestiones relacionadas