Отключение UIPopoverController с -dismissPopoverAnimated: не вызовет делегата?
У меня есть UIPopoverController с собой как делегат:
Я получаю вызовы, когда я выхожу за пределы контроллера popover, но когда я нажимаю внутрь, я тоже хочу уволить, поэтому я использую -dismissPopoverAnimated: но делегат не вызывается в этом случае.
Это нормально? Это ошибка, или я делаю что-то неправильно?
newDocPopoverController = [[UIPopoverController alloc] initWithContentViewController:vc];
[newDocPopoverController setPopoverContentSize:CGSizeMake(240, 44*4)];
[newDocPopoverController presentPopoverFromBarButtonItem:sender
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
[newDocPopoverController setDelegate:self];
UPDATE:
О, независимо от происхождения проблемы (будь то ошибка или это намеченное поведение), вызывающий сам делегат, решает проблему:)
Когда будет затронуто представление contentViewController, я вызову родительский UIPopoverController делегировать вызов.
if ([parentPopoverController.delegate popoverControllerShouldDismissPopover:parentPopoverController]){
[parentPopoverController dismissPopoverAnimated:YES];
[parentPopoverController.delegate popoverControllerDidDismissPopover:parentPopoverController];
}r];
Ответы
Ответ 1
Это нормальное, ожидаемое поведение.
Цитирование Документов Apple на popoverControllerDidDismissPopover:
:
Контроллер popover не вызывает этот метод в ответ на программные вызовы методу dismissPopoverAnimated:
. Если вы программно отклоняете popover, вы должны выполнить любые действия по очистке сразу после вызова метода dismissPopoverAnimated:
.
Ответ 2
Программно popoverControllerDidDismissPopover не будет вызван и не будет отклонен, вам придется вызвать делегата самостоятельно:
[self.PopUp dismissPopoverAnimated:YES];
[self.PopUp.delegate popoverControllerDidDismissPopover:self.PopUp];
Где PopUp является родительским UIPopoverController
Надеюсь, что это поможет
Приветствия
Аль
Ответ 3
сначала установите делегат;
yourPopup.delegate = я;
а затем где-то в вашем коде (может быть в вызове Частного метода из-за какого-то события).
используйте следующий код:
[self.yourPopUp упущениеПопулярность: YES];