popoverControllerDidDismissPopover NE PAS faire ce que je pense qu'il devrait

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;