2011-08-20 12 views
9

Me preguntaba si había una manera de evitar que un iPad popover se descarte automáticamente cada vez que toca la pantalla fuera del popover? Si no es así, ¿hay algún tipo de método similar a "popoverDidDismiss" al que pudiera llamar para informarme cuando se eliminó el popover?Detener UIPopover de descartar automáticamente

Respuesta

25

Sí, puedes. Esto está directamente en la documentación de Apple.

Cuando se descarta un popover debido a los toques de usuario fuera de la vista de popover, el popover notifica automáticamente a su delegado de la acción. Si proporciona un delegado, puede usar este objeto para evitar el rechazo del popover o realizar acciones adicionales en respuesta al despido. El método delegado popoverControllerShouldDismissPopover: le permite controlar si realmente se debe descartar el popover. Si su delegado no implementa el método, o si su implementación devuelve SÍ, el controlador descarta el popover y envía un mensaje popoverControllerDidDismissPopover: al delegado.

Simplemente no devuelven al método delegado popoverControllerShouldDismissPopover:

Aquí hay un enlace para su posterior lectura.

Popover Guide

+0

Gracias por la rápida respuesta. Intenté implementar esto y parece que no funciona. Debería ponerlo en el .m para ver dónde aparece el popover, no la vista dentro del popover, ¿verdad? –

+0

¿conseguiste que esto funcionara? ¿si es así, cómo? si no, ¿por qué está marcado como la respuesta correcta? – ngb

+0

¿Recordó hacer de su controlador de vista el delegado para el controlador popover? –

4
- (BOOL) popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController 
{ 
    return NO; 
} 

que lo hace por usted y usted puede asignar un elemento del botón de la barra específica o alguna otra cosa en su popover para descartar el popover.

+0

Intenté implementar esto y parece que no funciona. Debería ponerlo en el .m para ver dónde aparece el popover, no la vista dentro del popover, ¿verdad? –

+0

Sí. ¿Indicaste implementar UIPopoverControllerDelegate en el archivo de encabezado? – Bourne

+0

Creo que sí. En el archivo que contiene el contenido del popover, en .h tengo protocolo OptionsViewControllerDelegate - (void) didPick: (NSString *) cadena; final id delegado; y en .m: sintetizar delegado; y en la .h del archivo donde aparece el popover Tengo: interface exampleViewController: UIViewController { UIPopoverController * popoverController; OptionsViewController * optionsViewController; } A continuación, sintetice el UIpopoverController y el OptionsViewController en .m. ¿Me estoy perdiendo algo? Gracias. –

1

incluso puede usar u

self.modallnpopover = yes;

si desea descartarlo en un punto de vista particular

self.modallnpopover = no;

si no quieres que lo desestime

Cuestiones relacionadas