Отклонение UIPopoverController с помощью -dismissPopoverAnimated: не вызывает делегата?

У меня есть свой UIPopoverController с self в качестве делегата: Я получаю звонки, когда нажимаю снаружи всплывающий контроллер, но когда я нажимаю внутрь, я тоже хочу закрыть, поэтому я использую -dismissPopoverAnimated: но в этом случае делегат не вызывается. Это нормально? Это ошибка или я делаю что-то не так?

newDocPopoverController = [[UIPopoverController alloc] initWithContentViewController:vc];
[newDocPopoverController setPopoverContentSize:CGSizeMake(240, 44*4)];
[newDocPopoverController presentPopoverFromBarButtonItem:sender 
                permittedArrowDirections:UIPopoverArrowDirectionAny
                                                        animated:YES];
[newDocPopoverController setDelegate:self];

ОБНОВЛЕНИЕ:

О, независимо от источника проблемы (ошибка или предполагаемое поведение), вызов делегата самостоятельно решает проблему :)

При прикосновении к представлению contentViewController я вызываю родительский делегат UIPopoverController.

if ([parentPopoverController.delegate popoverControllerShouldDismissPopover:parentPopoverController]){
    [parentPopoverController dismissPopoverAnimated:YES];
    [parentPopoverController.delegate popoverControllerDidDismissPopover:parentPopoverController];
}r];
14
задан nacho4d 14 December 2011 в 09:34
поделиться

1 ответ

Это нормальное, ожидаемое поведение.

Цитата из документов Apple на popoverControllerDidDismissPopover: :

Контроллер всплывающего окна не вызывает этот метод в ответ на программные вызовы метода dismissPopoverAnimated: . Если вы закрываете всплывающее окно программно, вы должны выполнять любые действия по очистке сразу после вызова метода dismissPopoverAnimated: .

22
ответ дан 1 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: