Не отключайте UIPopoverController при отводе

после небольшого поиска, я не мог найти ответ на то, что кажется ему полезным для многих.

Можно ли отключить UIPopoverController, когда пользователь нажимает где-то снаружи? Я хочу, чтобы пользователь использовал кнопку отмены (да, я понимаю, что это, вероятно, нарушает Apple HIG каким-то образом, но это редкий случай и имеет смысл с точки зрения пользователя).

Спасибо за любую помощь.

Ответы

Ответ 1

Вы можете выполнить хит-тесты, где произошел кран, и в вашем делете popover вернуть NO. - (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController

Ответ 2

Просто установите свойство modalInPopover на UIViewController, отображаемое в UIPopoverController.

popover = [[UIPopoverController alloc] initWithContentViewController:content];
content.modalInPopover = YES;
[popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

Помните, что с iOS5 вам нужно установить modalInPopover внутри -viewDidAppear.

Ответ 3

Итак, я понимаю, что это старый вопрос. Тем не менее, есть более простой ответ для тех, кто ищет решение сегодня.

Если вы используете Storyboard Segue, вы можете установить свойство passthrough на segue, позволяющее взаимодействовать с другими объектами в представлении. Если вы это сделаете, щелчок вне границ popover не будет закрывать popover.

Вот еще информация: Что представляют собой привязки и Passthrough, используемые для popper segues?

И вот выдержка из документации Apple:

Разрешить пользователю взаимодействовать с указанными видами и не упускать popover, вы можете назначить одно или несколько просмотров для passthroughViews свойство.