Не закрывайте UIPopoverController при выключении - PullRequest
15 голосов
/ 13 июня 2011

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

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

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

Ответы [ 3 ]

26 голосов
/ 20 декабря 2011

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

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

Имейте в виду, что с iOS5 , вы должны установить modalInPopover внутри -viewDidAppear.

20 голосов
/ 13 июня 2011

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

1 голос
/ 02 декабря 2015

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

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

Вот еще немного информации: Для чего используются якорь и сквозной переход в переходах с поповера?

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

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

...