2014-02-06 4 views
0

У меня есть приложение для iPad, которое использует UIPopover из UIVIew; Мне нужно показать сообщение типа предупреждения, когда определенное условие выполнено.Есть ли способ показать сообщение (например, UIAlertView) из модального UIPopover?

Проблема заключается в использовании UIAlertView изнутри UIPopover, когда пользователь нажимает кнопку в UIAlertView, он также отклоняет UIPopover, который побеждает цель предупреждения.

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

Есть ли способ обойти это поведение?

ответ

2

Нет, и вы не должны этого делать. Попутчики должны уходить, как только вы прикасаетесь к чему-либо еще.

Вы можете немного увеличить изображение и создать место для сообщения о состоянии. Когда пользователь создает встречу, которая перекрывается, вы можете отобразить сообщение в области состояния.

Или вы можете отклонить popover и отобразить предупреждение с кнопками «ok»/«cancel». Кнопка ОК создала бы перекрывающуюся встречу, и кнопка отмены отменит ее.

Вам понадобится место для сохранения информации от popover, пока вы ждете, когда пользователь решит, что делать с предупреждением. Возможно, popover передал сообщение обратно контроллеру представления, откуда он появился, и затем контроллер исходного представления создает предупреждение, устанавливает себя как делегат и обрабатывает ответы от пользователя.

+0

Еще раз спасибо ... Я действительно, очень ценю это ... не знаю, почему я не думал об этом, но я этого не сделал. : D – SpokaneDude

1

Согласно Руководству Human Interface Apple, это нормально, чтобы отобразить UIAlertView сверху пирог:

https://developer.apple.com/library/ios/documentation/userexperience/conceptual/MobileHIG/Alerts.html

процитировать именно:

На IPad, не отображать модальный вид сверху. С возможным исключением предупреждения, ничего не должно отображаться поверх popover.

Отображение UIAlertView из popover автоматически не отключает popover. Вероятно, выполняется какой-то ваш собственный код, который вызывает его увольнение. Например, в аналогичной ситуации я обнаружил, что отображение UIAlertView вызывало «shouldAutorotate» в моем контроллере разделенного представления, и (из-за более ранних ошибок IOS) я разместил там код, чтобы отклонить popover. Для iOS7 + это уже не было необходимо, поэтому я смог переместить этот код в willRotateToInterfaceOrientation, где он больше не вызывает увольнения popover при отображении UIAlertView, потому что в этом случае, даже если «autoRotate» получает вызов «willRotateToInterfaceOrientation», ,

Смежные вопросы