ios ipad uikit uisplitviewcontroller uipopovercontroller

ios - La compilación contra el SDK 5.1 obliga a la nueva presentación "deslizar dentro" de UIPopoverController de popovers: ¿cómo deshabilitarla?



ipad uikit (4)

La compilación de la aplicación de mi iPad con el SDK 5.1 (versión de lanzamiento) hace que UIPopoverController se muestre a sí mismo usando la nueva "diapositiva" de la presentación izquierda. Esto rompe completamente mi presentación popover, que se basa en tener un encabezado de estilo "negro" y una cierta altura. He intentado configurar presentsWithGesture en NO , pero eso solo parece deshabilitar el gesto de deslizar y no detiene el estilo de presentación.

Esta misma aplicación, sin ser recompilada, pero ejecutándose en iOS 5.1, usa el antiguo estilo de presentación emergente. Así que sé que iOS 5.1 todavía es compatible con el método compatible con versiones anteriores. ¿Cómo puedo elegir activar la presentación antigua del popover?

Esto es realmente crítico para mi aplicación, por desgracia.

Si eso falla, ¿hay alguna manera de obtener el encabezado de estilo "negro" en los nuevos popovers?

Aunque tengo un UISplitViewController en mi aplicación, no es responsable de mostrar la ventana emergente. En su lugar, estoy usando este código:

[self.popoverController presentPopoverFromRect:ipadButtonMenu.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

Esta pregunta es una publicación cruzada de los foros de desarrolladores de Apple here . Espero que alguien tenga la respuesta.

Presentación prevista:

Presentación después de compilar bajo iOS 5.1 SDK:


¡Es posible revertir! - Con MGSplitViewController. Te da una API similar al control de iOS pero con un popover antiguo y mucho más control.


Este cambio parece mal pensado. Claro chicos, rompemos cualquier cosa en la vista detallada que usa un golpe. ¡Increíble!

Para responder a su pregunta de ''traer de vuelta el negro'', si es simplemente una cuestión del color de la barra de navegación superior, puede usar el proxy de apariencia. Por ejemplo:

[[UINavigationBar appearance] setTintColor:[UIColor blackColor]];

El proxy de apariencia se puede configurar muy específicamente si es necesario; Tiene un modelo de contenedores. Hay un muy buen video de WWDC en él.

Con respecto a solo volver al comportamiento anterior con el nuevo compilador, francamente, me encantaría saberlo también. El nuevo comportamiento también rompe las hojas de acción en la vista maestra; anteriormente, cuando la vista maestra se presentaba en una ventana emergente, hacían lo correcto. Ahora, es un fallo de afirmación.


Ok, tuve el mismo problema, esto puede ayudar, elimina el fondo negro que llega a la parte inferior de la pantalla ...

Llama a esto después de mostrar tu ventana emergente ...

- (void)removeInnerShadow { UIWindow *window = [[[UIApplication sharedApplication] delegate] window]; for (UIView *windowSubView in window.subviews) { if ([NSStringFromClass([windowSubView class]) isEqualToString:@"UIDimmingView"]) { for (UIView *dimmingViewSubviews in windowSubView.subviews) { for (UIView *popoverSubview in dimmingViewSubviews.subviews) { popoverSubview.layer.shadowOpacity=0; popoverSubview.layer.masksToBounds = NO; if([NSStringFromClass([popoverSubview class]) isEqualToString:@"_UIPopoverSlidingChromeView"]) { popoverSubview.layer.shadowOpacity=0; popoverSubview.layer.masksToBounds = NO; } } } } } }


a partir de iOS 5.1

De los documentos:

En iOS 5.1, la clase UISplitViewController adopta el estilo de presentación deslizante al presentar la vista izquierda (anteriormente solo se veía en Mail). Este estilo se usa cuando la presentación se inicia ya sea por el elemento del botón de barra existente proporcionado por los métodos de delegado o por un gesto de deslizar dentro de la vista derecha. No se requiere la adopción adicional de API para obtener este comportamiento, y todas las API existentes, incluida la de la instancia UIPopoverController proporcionada por el delegado, continuarán funcionando como antes.

pequeño trabajo por aquí ->