2010-01-14 11 views

Respuesta

5

Una posible solución es agregar una vista personalizada a tableHeaderView. Esto es lo que hice:

searchBar es un UISearchBar que declare en el archivo de encabezado. Creé un UIView y agregué un UINavigationBar para todo el ancho y agregué el corto UISearchBar encima. Luego, finalmente asigné el UIView a tableHeaderView.

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 290.0, 44.0)]; 

UIView *customTableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)]; 
UINavigationBar *dummyNavigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)]; 
[customTableHeaderView addSubview:dummyNavigationBar]; 
[customTableHeaderView addSubview:searchBar]; 
[dummyNavigationBar release]; 

self.tableView.tableHeaderView = customTableHeaderView; 
[customTableHeaderView release]; 

Una solución más elegante puede ser estirar el UISearchBar utilizando la propiedad contentStretch. Todavía tengo que probar eso y verificar si funciona.

+0

Configuración ** contentStretch ** no funcionó para mí. – Sney

+0

@Snej hmm ... entonces esta es la única solución que conozco ... gracias por informarme :) – srik

+0

También funciona en un guión gráfico. –

0

Si utiliza un UISearchDisplayController, el comportamiento deseado funcionará automágicamente como se indica en this answer.

1

¿Quiere decir que la A-Z de las letras índice en el lado derecho de la pantalla invaden la barra de búsqueda, como se ve en esta captura de pantalla donde aparecen 'A' y 'B' en el borde derecho de la barra de búsqueda?

enter image description here

(a) no puedo encontrar alguna manera de evitar este problema alfabeto-invadido. El enfoque vinculado por la respuesta de Scott McCammon aquí está prohibido por Apple (y aun así no estoy seguro de que resuelva este problema).

(b) Veo este comportamiento en las aplicaciones de contactos de Apple en iOS 6.0.1 en mi iPod touch (4ª generación).

(c) Supongo lógicamente que es una característica, no un error, ya que la barra de búsqueda está en el encabezado de la vista de tabla. El encabezado es parte de la vista de tabla y se desplaza como parte de la vista de tabla, por lo que quizás tenga sentido que se dibuje el alfabeto de índice como lo hace sobre el resto de la vista de tabla.

Este problema se convierte en un problema cuando tiene botones de alcance. No hay espacio reservado a la derecha para los botones de alcance, de modo que el alfabeto de índice se dibuja justo sobre el botón de más a la derecha.