Vistas de SLComposeViewController enviadas a la aplicación y dejan de responder

Tengo un button en mi aplicación para SLComposeViewController un SLComposeViewController para su uso con Twitter. Cuando se presenta la vista, se anima correctamente y desaparece. He descubierto que cuando desaparece, se envía al final de la vista actual y no tengo forma de recuperarlo. He intentado enviar manualmente todas las vistas de arriba hacia atrás en el código sin suerte. Siento que hay algo fundamentalmente incorrecto en mi aplicación para que esto suceda ya que este comportamiento se ve en cualquier nivel en el controller de navigation de la aplicación. A continuación se muestra una captura de pantalla del SLComposeViewController es la barra de navigation en la aplicación, hice que la vista ViewController tenga un valor Alpha de 0.0f para ilustrar mi punto:

introduzca la descripción de la imagen aquí

Realmente no sé lo que está pasando aquí y cualquier ayuda será muy apreciada. El código que estoy usando para presentar el SLComposeViewController es bastante estándar y lo he probado en otra aplicación y funciona bien:

 NSString *message = [NSString stringWithFormat:@"#%@", [twitterInfo objectForKey:@"hashtag"]]; if ([appDelegate isSocialAvailable]) { // code to tweet with SLComposeViewController SLComposeViewController *twitter = [[SLComposeViewController alloc] init]; twitter = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; [twitter setInitialText:[NSString stringWithFormat: @"%@", message]]; [self presentViewController:twitter animated:YES completion:nil]; } 

Gracias por publicar esto, sucedió lo mismo porque estaba agregando un CAShapeLayer a mi window para un efecto de gradiente. Tu publicación me ayudó a descubrir que este era el problema.

Parece que esto está sucediendo porque están agregando la capa de su vista a las subcapas de la window: ¡en el índice 0 podría agregar! Esto es contrario a lo que cabría esperar, que es que agregarían su vista como subvista a la vista del controller de vista de presentación.

Deben haber pensado que las personas no agregan capas a su window y quieren asegurarse de que no están compitiendo con su stack de vistas. Por qué lo pondrían en el índice 0 solo debe ser porque alguien tiene la costumbre de hacerlo -[CALayer insertLayer:layer atIndex:0] Supongo.

No estoy seguro, pero supongo que este podría ser el caso con cualquier controller de vista modal.

La solución es bastante simple:

 [viewController presentViewController:facebookViewController animated:YES completion:^{ facebookViewController.view.layer.zPosition = 1000; }]; 

Después de una semana de arrancarme los pelos para encontrar una solución a esto, he encontrado el código infractor en la aplicación, un pequeño truco para networkingondear las esquinas de toda la aplicación, así que parece que las esquinas se networkingondean al agregar una image allí :

 UIImage *bottomOverlayImage = [UIImage imageNamed:@"bottom_overlay.png"]; CALayer *bottomOverlay = [CALayer layer]; bottomOverlay.frame = CGRectMake(0, self.window.frame.size.height - 9, bottomOverlayImage.size.width, bottomOverlayImage.size.height); bottomOverlay.contents = (id)bottomOverlayImage.CGImage; bottomOverlay.zPosition = 1; [self.window.layer addSublayer:bottomOverlay]; 

Si alguien pudiera decirme por qué este código dañaría la Vista de Twitter que sería realmente útil para reference futura. Este código se colocó en el delegado de la aplicación y se ejecutó con la primera carga.