popoverControllerDidDismissPopover НЕ делает то, что я думаю, что должен

Итак, я думаю, что когда я нажимаю за пределами всплывающего окна, должен вызываться метод popoverControllerDidDismissPopover. Я знаю, что это не вызывается, когда вызывается dismissPopoverAnimated.

У меня есть простой проект, который я настроил, который показывает, что popoverControllerDidDismissPopover просто не называется:

#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

Пожалуйста, скажите мне, где я ошибаюсь или как я могу определить, когда всплывающее окно отклонено.

Весь проект тут:

https://rapidshare.com/files/3182903825/PopoverDemo.zip


person Dave Chambers    schedule 21.05.2013    source источник


Ответы (2)


Вы никогда не устанавливаете delegate для popoverController на self.

_popoverController.delegate = self;
person Mark McCorkle    schedule 21.05.2013
comment
Сделаю, через несколько минут, когда это позволит мне - person Dave Chambers; 21.05.2013

Вы не установили delegate своего popoverController. Добавьте следующий код в конец метода viewDidLoad:

popoverController.delegate = self;
person Levi    schedule 21.05.2013