Paisaje de iPad de Gestos perdidos

Tengo una aplicación con un MGSplitView que contiene una vista de tabla y una UIWebView, que se fija en el paisaje. La vista web tiene una UITapGestureRecognizer (para un toque triple) adjunto a la vista web. Los toques en la parte izquierda de la vista web funcionan; los toques en el lado derecho de la vista web se pierden: la acción no se activa y los mensajes de delegado de gestos no se reciben.

El problema parece no estar en la MGSplitViewController, como cambiar a un UISplitViewController tiene los mismos problemas; cambiar de un toque a una pulsación larga también tiene los mismos resultados.

Las ubicaciones de toque se informan con la coordenada x en o cerca del ancho máximo de la vista de gestos y, sin embargo, están claramente cerca del centro de la pantalla, lo que espero que tenga algo que ver con la raíz del problema, y ​​sin embargo los contenidos de la vista web son claramente visibles y están colocados correctamente.

Todos los controladores de vista involucrados implementan shouldAutorotate y supportedInterfaceOrientations, por lo que estar atrapado en el retrato parece poco probable, es decir MGSplitViewController, Mi UITableView subclase (panel izquierdo) y UIViewController subclase para el panel de la derecha.

Mi delegado del reconocedor de gestos y la salida de un triple toque (la vista en la vista web del panel derecho):

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    NSLog(@"%s", __PRETTY_FUNCTION__);
    NSLog(@"gestureRecognizer view frame: %@", NSStringFromCGRect(gestureRecognizer.view.frame));
    NSLog(@"location %@", NSStringFromCGPoint([gestureRecognizer locationInView:gestureRecognizer.view]));
    return YES;
}

-[DocumentBrowser gestureRecognizer:shouldReceiveTouch:]
gestureRecognizer view frame: {{0, 0}, {703, 704}}
location {703, -20}
-[DocumentBrowser gestureRecognizer:shouldReceiveTouch:]
gestureRecognizer view frame: {{0, 0}, {703, 704}}
location {414.5, 204.5}
-[DocumentBrowser gestureRecognizer:shouldReceiveTouch:]
gestureRecognizer view frame: {{0, 0}, {703, 704}}
location {414.5, 204.5}

La primera ubicación reportada parece extraña.

preguntado el 31 de diciembre de 12 a las 16:12

La vista que se comporta mal es/era una UIViewControllerWrapperView, la supervista de la vista de mi controlador de vista. Parece más que un poco irrazonable que una clase privada de Apple sea responsable de este tipo de problema. -

1 Respuestas

Compruebe su orientación y vea los mecanismos de cambio de tamaño. He visto esto varias veces cuando algo está mal en estas áreas: si registra las ubicaciones táctiles, creo que probablemente encontrará que se detienen en 768 puntos desde el lado izquierdo, es decir, hay una vista en algún lugar que lo piensa. está en orientación vertical.

Respondido el 31 de diciembre de 12 a las 16:12

He visto coordenadas táctiles en x = 1024 (aunque esto sigue siendo aproximadamente 730 desde el lado izquierdo de la pantalla). Volveré a comprobar las orientaciones, ya que esto parece plausible. - Paul Lynch

Todos los controladores de vista involucrados implementan shouldAutorotate y supportedInterfaceOrientations, por lo que parece poco probable quedarse atascado en el modo vertical. - Paul Lynch

El problema se rastreó hasta una supervista que no se redimensionó; como tampoco se recortaba, la vista "superior" era visible en todo el ancho, pero los gestos se perdían. - Paul Lynch

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.