Pregunta

he visto el ejemplo de Apple "TableSearch" que cuando se tocan los botones alcance vienen por debajo de la barra de búsqueda. http://developer.apple.com/iphone/library/samplecode /TableSearch/Introduction/Intro.html

Pero cuando hago mi propia se ve bien al principio, pero cuando toco parece que, botones alcance feas y barra de búsqueda se muestran en la misma línea como la siguiente: http://cl.ly/BN9

¿Qué tengo que hacer que sea como ejemplo "TableSearch" en el IPAD?

Estoy haciendo todo en IB y trató de modificar la barra de búsqueda mediante programación desde el controlador:

    - (void)viewDidLoad {

        [super viewDidLoad];
        self.tableView.rowHeight = 88.0f;
        self.tableView.contentOffset = CGPointMake(0, self.searchDisplayController.searchBar.frame.size.height);
self.searchDisplayController.searchResultsTableView.rowHeight = self.tableView.rowHeight;


    //BELOW DID NOT WORK:
    CGRect b = self.searchDisplayController.searchBar.bounds;
    self.searchDisplayController.searchBar.bounds = CGRectMake(b.origin.x, b.origin.y, b.size.width, self.tableView.rowHeight);
    b = self.searchDisplayController.searchBar.frame;
    self.searchDisplayController.searchBar.frame = CGRectMake(b.origin.x, b.origin.y, b.size.width, self.tableView.rowHeight);

    //BELOW WORKS PERFECT BUT IS A PRIVATE METHOD, HENCE I AM NOT SUPPOSED TO USE IT
    //[self.searchDisplayController.searchBar setCombinesLandscapeBars:NO];

     }

Gracias de antemano.

¿Fue útil?

Solución

He encontrado este error también, y tanto he presentado un informe con Apple y solicitó asistencia técnica. Te dejaré saber cómo se va. Mientras tanto te voy a dar una breve poco de antecedentes sobre este error.

En el iPhone, para preservar preciado espacio en pantalla vertical en modo horizontal, el UISearchDisplayController establece el UISearchBar para combinar su barra de búsqueda y campo de búsqueda en una sola disposición horizontal. Esto funciona bastante bien, debido al tamaño horizontal aumento de la pantalla (480 puntos en el paisaje). Por desgracia, no funciona tan bien en el IPAD, donde en modo horizontal el cambio de interfaz de usuario realmente no es necesario, en primer lugar porque tiene un montón de propiedades inmobiliarias vertical. También sigue siendo sólo tiene 320 píxeles de espacio de visualización horizontal en la vista principal de la UISplitViewController, no el aumento del 480 del iPhone. El resultado es un Isoré.

Es de suponer que el problema es que UISearchDisplayController se comporta mal en su willRotateToInterfaceOrientation: duración: método. En concreto, no molesta para comprobar si está en un iPhone o no antes de que establece la propiedad combinesLandscapeBars en su UISearchBar. El kludge API privada en el código funciona porque fija que la supervisión en el UISearchDisplayController. Pero, por supuesto, Apple va a llover la furia de los antiguos en que para el uso de las API de indocumentados, por lo que no puede. Realmente estamos a merced de Apple en éste.

Si usted está dispuesto a renunciar a la vistosidad y la conveniencia de UISearchDisplayController, se puede utilizar un UISearchBar sans UISearchDisplayController y gestionar aspectos de la presentación usted mismo. Obviamente, esto requiere mucho más código y no tendría sentido si los ingenieros de la API de Apple hicieron su trabajo, pero lo hará al menos resolver el error de visualización.

Si usted es de Apple puede utilizar sus propias APIs indocumentados, lo cual es la razón por Mail.app no ??tiene este problema.

Actualizar

El informe de error que haya presentado con Apple es # 8344719.

Otros consejos

Usando el siguiente código, usted no conseguirá la advertencia:

if ([self.searchDisplayController.searchBar respondsToSelector:@selector(setCombinesLandscapeBars:)])
{
    objc_msgSend(self.searchDisplayController.searchBar, @selector(setCombinesLandscapeBars:), NO );
}

Al establecer los límites y el marco para la barra de búsqueda, como para el marco aquí:

blabla.searchBar.frame = CGRectMake(b.origin.x, 
                                    b.origin.y, 
                                    b.size.width, 
                                    self.tableView.rowHeight);

parece que hay un problema con la altura. botones alcance requieren algún espacio debajo de la barra de búsqueda, por lo que debe aumentar la altura de ambos límites y el marco.

Si mostrar y ocultar los botones de ámbito en algún evento que tenga que ajustar el tamaño de la trama cada vez.

Me estoy poniendo este tema en un iPad, pero puedo conseguir que funcione si inserto esto en mi archivo de implementación:

@synthesize tableView;

Estoy adivinando hay algo mal con el XI ter que se está cargando, pero no sé por qué esto sería solucionarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top