2010-06-09 11 views
6

Actualmente tengo un UISearchBar (conectado a un UISearchDisplayController), pero reduje el ancho de la barra de búsqueda para poder mostrar un botón personalizado a su derecha cuando la barra de búsqueda no está seleccionada. El botón se usa para acceder a otras vistas.UISearchBar botón de ocultación de animación

Sin embargo, cuando selecciono la barra de búsqueda y presiono cancelar (o incluso realizar una búsqueda) y regreso a la vista normal, donde la barra de búsqueda debe mostrarse con mi botón personalizado, la barra de búsqueda anima y ocupa todo la habitación para el botón y el no se muestra. Esencialmente, la barra de búsqueda ocupa todo el ancho de la pantalla cuando solo quiero que ocupe una parte de ella.

¿Hay alguna manera de evitar que la barra de búsqueda pueda animar a todo el ancho de la pantalla?

Así es como he definido el CGRect de la barra de búsqueda:

self = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 250.0f, 45.0f)] 

Respuesta

1

Este SO post podría ayudar. Suena como si necesitaras subclase UISearchBar para detenerlo haciendo su dibujo normal.

ACTUALIZACIÓN quería utilizar un UISearchBar en un UINavigationBar, y tienen que cambiar el tamaño para llenar la barra cuando se toca - al igual que el comportamiento en la aplicación Safari. La única forma en que podía hacer esto era usar UISearchBar directamente. Su problema es levemente diferente, pero podría tratar de obtener el comportamiento de UI que desea utilizando solo la barra de búsqueda para comenzar; luego conecte la lógica para buscar después; es decir, ¿no confías en UISearchDisplayController?

3

Al final, la respuesta a esto fue más simple de lo que pensaba. Por alguna razón, el SDK de iPhone llena el ancho del marco de la barra de búsqueda, así que tengo que restablecerlo constantemente al tamaño que quiero cada vez que el usuario presiona el botón cancelar y se desencadena el evento searchBarCancelButtonClicked(). Un simple [searchBar setFrame: frame] lo resolvió. :)

Peter, el problema en la publicación que vinculó era un poco diferente, ya había sido capaz de cambiar el tamaño de la barra de búsqueda a lo que quería, lo que necesitaba era detenerlo para que volviera al ancho completo. Gracias por el enlace.

+1

Saber qué método de delegación de barra de búsqueda usar aquí es la clave. Hay demasiados métodos posibles, en mi humilde opinión. EDITAR: En realidad, configurar el marco en 'searchBarCancelButonClicked' no funciona para mí. Me he resignado a establecer el marco en el método 'searchDisplayControllerDidEndSearch' en su lugar, lo que es molesto, porque se anima a todo el ancho de la pantalla y luego se anima de nuevo al tamaño que quiero. – livingtech

+0

Bueno, mi publicación es un poco vieja, tal vez algo cambió en un año. No puedo verificar si mi código aún funciona. ¡Espero que encuentres una solución pronto! –

+0

@livingtech Tengo su problema exacto. ¿Encontraste alguna solución? Intento encontrar alguna forma de usar UISearchDisplayController, pero creo que tendré que implementar su funcionalidad por mi cuenta, solo por ese error flagrante. – KKendall

Cuestiones relacionadas