Debe haber algo básico que me falta aquí. Tengo un UIScrollView abierto, que está controlado por un cliente UIScrollViewController (llamado DataController). En un cierto punto en el tiempo, es necesaria la entrada del usuario, por lo que abrir una UIViewController modal de la DataController:Descartar cambios de vista modal subyacentes a UIScrollView
ElementSelectController *viewController = [[ElementSelectController alloc] initWithNibName:@"ElementSelectController" bundle:nil];
viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
viewController.theDelegate = self;
[self presentModalViewController:viewController animated:YES];
Una vez que el usuario está listo con la vista modal, es despedido de nuevo. Esto también ocurre desde DataController:
[self dismissModalViewControllerAnimated:YES];
Todo funciona bien. Pero cuando la vista modal se va, resulta que el UIScrollView subyacente se redimensiona a pantalla completa, y se desplaza a la posición (0,0). Este es el caso incluso con una vista modal simple que no hace más que descartar. Obviamente, quiero que UIScrollView permanezca en el mismo estado y tamaño que antes de que apareciera la vista modal.
¿Alguna idea de lo que estoy haciendo mal?
he comprobado el seguimiento de la pila cuando se establece el marco UIScrollView (a través de un punto de ruptura en setFrame: de una costumbre UIScrollView), y parece que se llama a partir de:
-[UITransitionView transition:fromView:toView:]
que se llama a través de , a través de la llamada dismissModalViewControllerAnimated.
No sé por qué sucede eso, pero siempre puedes almacenar UIScrollView contentOffset y restablecer si después de que el modal desaparece. – NWCoder
Por favor, muestre algunos de sus códigos de viewwillappear ... –
Gracias. Eso es lo que hago ahora como una solución alternativa. Guardo el marco y el contentOffset de UIScrollView, y los reinicio inmediatamente después de la llamada de descarte. Eso parece funcionar, pero se siente como un truco. Me gustaría saber cuál es la forma normal de manejar esto. – fishinear