restaurar - USearchDisplayController searchResultsTableView''s ContentSize es incorrecto. Error en iOS 7?
no se pudo restaurar el iphone ocurrio un error desconocido 9 (2)
Este error del sistema permanece en iOS 8, y la solución de aceptar respuesta ya no funciona. Por lo tanto, debe utilizar la siguiente solución:
-(void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}
-(void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}
-(void)keyboardWillHide:(NSNotification*)notification {
CGFloat height = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;
UITableView *tableView = [[self searchDisplayController] searchResultsTableView];
UIEdgeInsets inset;
[[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0 ? (inset = UIEdgeInsetsMake(0, 0, height, 0)) : (inset = UIEdgeInsetsZero);
[tableView setContentInset:inset];
[tableView setScrollIndicatorInsets:inset];
}
El problema a continuación solo ocurre en una aplicación iOS 6.0 / 6.1 que se ejecuta en un dispositivo iOS 7.0+.
Así que tengo un UISearchDisplayController
que busca en nuestra API y devuelve datos. Todo esto funciona, y todo se muestra como queremos. El único problema que estamos viendo es que después de que el contenido ha poblado searchResultsTableView
, parece que cuando el teclado está inicialmente oculto, el contentSize
de searchResultsTableView
es mucho más grande que los datos, y en realidad parece ser el tamaño del teclado. Cuando ingreso a la barra de búsqueda, muestro el teclado y presiono ''Buscar'' nuevamente (solo para ocultar el teclado), contentSize
se ajusta correctamente para llenar la pantalla y nada más. A continuación se muestra una captura de pantalla de lo que estoy hablando con la población inicial de tableView
.
El blanco es el dato de la tabla, y el color gris / crema es el espacio adicional de tableView
.
¿Alguna idea sobre cómo solucionar este problema?
Yo tuve el mismo problema. La solución publicada en los foros de desarrolladores here funcionó para mí. No estoy seguro si es un error en iOS 7 o simplemente que cambiaron la forma en que están haciendo las cosas, pero esta es la única solución que encontré resolvió mi problema.
Solución del post del foro para los perezosos:
- (void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}
- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide) name:UIKeyboardWillHideNotification object:nil];
}
- (void) keyboardWillHide {
UITableView *tableView = [[self searchDisplayController] searchResultsTableView];
[tableView setContentInset:UIEdgeInsetsZero];
[tableView setScrollIndicatorInsets:UIEdgeInsetsZero];
}