2012-03-08 11 views
17

Al compilar mi aplicación para iPad con el SDK 5.1 (versión de lanzamiento) hace que UIPopoverController se muestre usando la nueva "presentación" de la presentación de la izquierda. Esto rompe por completo mi presentación de popover, que se basaba en tener un encabezado de estilo "negro" y una cierta altura. Intenté configurar presentsWithGesture en NO, pero eso solo parece deshabilitar el gesto de deslizar y no detiene el estilo de presentación.La compilación en contra de 5.1 SDK fuerza a la nueva presentación "deslizante" UIPopoverController de los popovers: ¿cómo deshabilitar?

Esta misma aplicación, sin ser recompilada, pero que se ejecuta en iOS 5.1, usa el viejo estilo de presentación de popover. Así que sé que iOS 5.1 todavía admite el método compatible con versiones anteriores. ¿Cómo puedo elegir activar la presentación anterior del popover?

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

En su defecto, ¿hay alguna forma de obtener el encabezado de estilo "negro" en los nuevos popovers?


Aunque tengo un UISplitViewController en mi aplicación, no es responsable de mostrar el popover. En cambio, estoy usando este código:

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

Esta pregunta es una cruz-post de los foros de Apple Developer here. Espero que alguien tenga la respuesta.


presentación esperado: enter image description here

Presentación después de compilar bajo iOS 5.1 SDK: enter image description here

+0

Esa es una poderosa interfaz de usuario bien designin' mi amigo! ¿Ha tenido la oportunidad de limpiar su compilación y volver a compilar desde cero? Archivaría un radar, ya que Twitter parece estar explotando con el mismo problema al que se enfrenta. – CodaFi

+0

Sí, limpiar/reconstruir no parece afectarlo. ¿Alguien específico en Twitter está viendo hablar sobre eso? –

+0

Breve resumen: https://mobile.twitter.com/nimaa/status/156521684512415746 – CodaFi

Respuesta

5

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

Para responder a su pregunta 'traer de vuelta el negro', si se trata simplemente 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 aparición se puede establecer muy específicamente si es necesario; tiene un modelo de contenedores. Hay un muy buen video de WWDC en él.

Con respecto a volver al antiguo comportamiento con el nuevo compilador, francamente, me gustarí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 un popover, hacían lo correcto. Ahora, es una falla de afirmación.

+0

'setTintColor' puede funcionar como último recurso, gracias por eso. Desafortunadamente, la altura del popover ('contentSizeForViewInPopover') también es bastante importante para esta aplicación, y parecen haber roto completamente ese comportamiento. –

+0

Como no parece posible volver al comportamiento anterior, me he resignado a arreglarlo para que se vea mejor. Tu respuesta lo hizo posible, así que lo estoy marcando como la respuesta. –

+0

hola, ¿por casualidad se te ocurre una forma de restaurar el efecto de popover en iOS 5.1? – CocoaEv

0

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

llamada esto después de mostrar su popoup ...

- (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; 

        } 
       } 
      } 
     } 
    } 
} 
0

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

0

a partir de iOS 5.1

A partir de los documentos:

En iOS 5.1, la clase UISplitViewController adopta el estilo de presentación de deslizamiento en la presentación de la vista a la izquierda (visto anteriormente sólo en Correo). Este estilo se utiliza cuando la presentación se inicia ya sea por el elemento de botón de barra existente proporcionado por los métodos de delegado o por un gesto de deslizamiento dentro de la vista derecha. No se requiere ninguna adopción de API adicional para obtener este comportamiento, y todas las API existentes, incluida la instancia de UIPopoverController proporcionada por el delegado, continuarán funcionando como antes.

pequeña obra sobre todo here ->

Cuestiones relacionadas