2011-07-12 6 views
6

Estoy mostrando un popover con el controlador de vista contenida que tiene la propiedad modalInView establecida. Necesito que el usuario ingrese una respuesta aquí antes de continuar.¿Cómo puedo desactivar la barra de herramientas principal cuando visualizo un popover usando modalInPopover?

Si bien esto desactiva la mayoría de los controles de mi interfaz de usuario, deshabilita los botones de la barra de herramientas en la aplicación principal. No quiero que el usuario interactúe con la aplicación antes de seleccionar un elemento en el popover y cerrarlo.

¿Me falta algo inteligente aquí, es decir, que desactivaría la barra de herramientas de forma predeterminada? ¿Por qué permanece activo? ¿Hay algunas pautas de interfaz de usuario que lo requieran?

¿Debo simplemente configurar la barra de herramientas para no permitir la interacción del usuario, o es tan complicado?

Respuesta

1

Lo que encontré trabajando mejor es lo que usted menciona como posibilidad en su pregunta:

-(void)showMyPopover 
{ 
    .... 
    self.myToolBar.userInteractionEnabled=NO; 
    [self.myPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES] 
} 

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController 
{ 
    self.myToolBar.userInteractionEnabled=YES; 
    ... 
} 
6

Parece que iOS añade la barra como un "punto de vista de paso a través" de la popover, cuando se presente a partir UIBarButtonItem.

Sólo hay que establecer a cero passthroughViews propiedad de UIPopoverController tras presentarse, así:

[self.myPopover presentPopoverFromBarButtonItem:some_item permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
dispatch_async(dispatch_get_main_queue(), ^{ self.myPopover.passthroughViews = nil; }); 
+0

¡Gracias! Me salvó :) – mohamede1945

+0

Salvavidas, seguro. Ni siquiera puedo concebir por qué Apple haría esto de forma predeterminada, ya que es un bloqueo garantizado cada vez que toca el elemento del botón de la barra de nuevo. – MusiGenesis

+0

En iOS8 necesita configurar passthroughViews en otro runloop para que funcione. Más información [aquí] (http://blog.karmeye.com/2014/11/20/ios8-popovers-and-passthroughviews/). – Karmeye

2

Uso -[UIPopoverController presentPopoverFromRect:inView:permittedArrowDirections:animated] lugar, que no permite la interacción barra de herramientas por defecto. Por ejemplo, si presenta desde un UIBarButtonItem con un conjunto de propiedades de vista personalizado:

[barButtonItem presentPopoverFromRect:barButtonItem.customView.bounds inView:barButtonItem.customView permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];` 
Cuestiones relacionadas