ios - ¿Cómo debería presentar un UISearchController utilizando una interfaz de usuario adaptable UISplitView?
ios8 uisplitviewcontroller (1)
Uso de un guión gráfico universal con una interfaz de usuario adaptable UISplitViewController
.
Quiero presentar un controlador de búsqueda en el lado primario (principal), utilizando el siguiente código (desde el controlador de vista maestro):
static NSString * const kCGISearchViewControllerID = @"SearchViewControllerID";
- (IBAction)searchButtonClicked:(UIBarButtonItem *)__unused sender {
SearchViewController *searchResultsController = [self.storyboard instantiateViewControllerWithIdentifier:kCGISearchViewControllerID];
self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController];
self.searchController.searchResultsUpdater = searchResultsController;
self.searchController.hidesNavigationBarDuringPresentation = NO;
[self presentViewController:self.searchController animated:YES completion:nil];
}
Inicialmente parece funcionar correctamente (independientemente de la orientación inicial):
Los problemas aparecen después de la autorrotación (el teclado aún está visible, el contenido subyacente sigue atenuado, pero la barra de búsqueda ha desaparecido):
Al volver al paisaje, la barra de búsqueda reaparece, pero ahora su ancho es incorrecto:
(También intenté ubicar la searchBar
búsqueda del controlador de searchBar
en titleView
. Mientras que searchBar se adapta correctamente, el controlador de resultados de búsqueda aún no se ve bien).
¿Qué me está faltando para que UISearchController
correctamente a medida que la interfaz de usuario se adapta a las cambiantes clases de tamaño?
Actualizar:
Añadiendo self.definesPresentationContext = YES;
hace que la barra de búsqueda / resultados aparezca en la vista principal, pero la barra de búsqueda está animando debajo de esa barra de navegación y no está visible. El otro problema es que la altura de la barra de búsqueda no se contrae, cuando gira de vertical (que tiene una barra de estado), vuelve al paisaje.
¿Qué versión de Xcode estás usando? ¿Qué versión de iOS tiene el simulador?
Intenté usar Xcode 6, iOS 8.4 - Ese es todo el código que utilicé en MasterVC:
class MasterViewController: UITableViewController {
@IBAction func search(sender: UIBarButtonItem) {
let searchController = UISearchController(searchResultsController: nil)
searchController.hidesNavigationBarDuringPresentation = false
presentViewController(searchController, animated: true, completion: nil)
}
...
}
¡Se presenta dentro del Master y bloquea la orientación de la pantalla! El comportamiento puede haber cambiado desde que publicó su respuesta.