Donc, je pense que lorsque je clique en dehors d'un popover, la méthode popoverControllerDidDismissPopover
devrait être appelée. Je sais que cela n'est pas appelé lorsque le dismissPopoverAnimated
est appelé.
J'ai un projet simple que j'ai configuré qui montre popoverControllerDidDismissPopover
n'est pas appelé:
#import "ViewController.h" #import "PopoverViewController.h" @interface ViewController () { PopoverViewController *controller; UIPopoverController *popoverController; } @end @implementation ViewController @synthesize button; - (IBAction)showPopover:(UIButton *)sender { if ([popoverController isPopoverVisible]) { [popoverController dismissPopoverAnimated:YES]; } else { CGRect popRect = CGRectMake(self.button.frame.origin.x, self.button.frame.origin.y, self.button.frame.size.width, self.button.frame.size.height); [popoverController presentPopoverFromRect:popRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; } } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. controller = [[PopoverViewController alloc] initWithNibName:@"PopoverViewController" bundle:nil]; popoverController = [[UIPopoverController alloc] initWithContentViewController:controller]; } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; } - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController { NSLog(@"Why am I never called!!!!"); } - (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController { return true; } @end
S'il vous plaît dites-moi où je vais mal ou comment je peux détecter quand un popover est rejeté.
L'set du projet est ici:
https://rapidshare.com/files/3182903825/PopoverDemo.zip
Vous ne définissez jamais le delegate
pour votre popoverController
à self
.
_popoverController.delegate = self;
Vous n'avez pas défini le delegate
de votre popoverController
. Ajoutez le code suivant à la fin de la méthode viewDidLoad
:
popoverController.delegate = self;