Transformación parcial de Curl para la secuela modal en iOS 8

Creé una aplicación simple con dos VC.
Abro el segundo VC desde el primer button via. La secuela es "Presente Modalmente" y la transición es "Curva de Partición". Este esquema funciona bien en iOS7, pero en iOS8 la primera vista de VC desaparece al final de la animation de curvatura: introduzca la descripción de la imagen aquí

Tengo el mismo problema. Lo vi en Xcode 6 (beta 7) + iOS 8 (beta 5). Todavía está presente en la semilla de GM de ambos.

iOS 7.1 Specifics:

Se denomina "curl parcial" y en iOS 7 se muestra como tal (por ejemplo, Parcial – todavía se puede ver una parte de la vista de origen en la parte superior de la window). En iOS 7: cuando toca esta vista "original" parcialmente expuesta, la vista se desenrolla de nuevo en la window completa del original.

iOS 8 Specifics:

El segue NO deja ninguna de las presentaciones originales. Y cualquier toque, en cualquier lugar de la window / pantalla, devuelve la vista de origen a través de un desenrollamiento automático. Si tiene un UITextField en la vista, cuando lo toca para ingresar un valor … la vista de origen vuelve sin activar ninguno de los methods UITextField asociados. No se muestra ningún keyboard, simplemente se desenrolla a la vista de origen.

Me parece que esa definición de toque asociada con lo que debería ser un rincón parcialmente visualizado de la vista original está mal definida como la window completa.

Por supuesto, soy muy nuevo en la progtwigción de iOS, por lo que mi idea, si es correcta, no me da una idea de cómo solucionarlo. Jajaja. Espero que alguien que tenga el conocimiento tenga al less una solución útil.

Jim

PS Todavía no tengo suficientes puntos de reputación para votar o comentar, de ahí mi respuesta que no es una respuesta.

Esto es un error, o (en mi humilde opinión) una indicación de Apple de que este ModalTransitionStyle está a punto de quedar en desuso. Dado que es probablemente el último vestigio del pseudomorfismo, creo que es una apuesta segura que es corto para este mundo. Estaba depurando un problema durante horas con respecto a los toques inconsistentes en un controller de vista presentado de manera modesta, usando esta transición y tirándome el pelo. Cambié a otro estilo de transición modal y POOF: todos los problemas causados ​​por iOS8 desaparecieron.

Keith

Tuve el mismo problema. Al tocar en cualquier parte de la mitad superior de la pantalla, el modal se cerró (se desenrolla). Cambió la animation y el mundo volvió a estar en paz.

Entonces, definitivamente un error en iOS8.

La solución simple a este problema es.

- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; for(UIGestureRecognizer *gesture in [self.view gestureRecognizers]) { if([gesture isKindOfClass:[UIGestureRecognizer class]]) { [self.view removeGestureRecognizer:gesture]; } } } 

Necesita encontrar una vista de supervisión, que contiene UIDismissCurlUpTapGestureRecognizer, de la vista en la que desea deshabilitar ese reconocimiento de gestos. Por ejemplo, en mi caso:

po self.view.superview? .superview? .superview? .gestureRecognizers

▿ Opcional> ▿ Algunos: 2 elementos – [0]:; target = <(action = handleNavigationTransition :, target = < UINavigationInteractiveTransition 0x15826e2e0>) >> – [1]: < UIDismissCurlUpTapGestureRecognizer : 0x15838a2c0; estado = posible; vista =; target = <(action = _handleTapToDismissModalCurl :, target =) >>

Entonces eliminé ese reconocimiento de gestos, con esta parte del código:

 override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) if (self.view.superview?.superview?.superview != nil){ if (self.view.superview!.superview!.superview!.gestureRecognizers != nil){ for gestureRecognizer in self.view.superview!.superview!.superview!.gestureRecognizers!{ if (gestureRecognizer.isKindOfClass(UITapGestureRecognizer)){ self.view.superview!.superview!.superview!.removeGestureRecognizer(gestureRecognizer) } } } } } 

Nota: es muy importante que lo haga en viewDidAppear , ya que la vista no conoce sus superventas anteriormente en el ciclo de carga.

¡Yo también perseguí este ERROR por días! Resulta que todavía puede utilizar el Curl parcial con éxito; el problema solo aparece si se marca la casilla ANIMATES. Desmarque la casilla ANIMATES, y ya está listo.