2012-01-10 3 views
1

У меня есть приложение, которое имеет серию пользовательских модальных диалоговых представлений. Будучи модальным, мне нужно запретить пользователям взаимодействовать с элементами, находящимися в стороне от диалогов (например, когда появляется диалог паузы, я не хочу, чтобы пользователи могли касаться кнопок для навигации по приложению). Чтобы сделать их модальными, у меня есть прозрачный UIView «позади» каждого из видов диалогового окна, чтобы уловить штрихи. Это прекрасно работает, за исключением того, что есть анимация UIView, которая затухает в диалоговом окне вверх и в то время как они исчезают, в диалоговых представлениях игнорируются штрихи.Захват штрихов на прозрачном UIView

Насколько я могу судить, проблема в том, что если альфа-версия UIView не равна 1,0, то она игнорирует касания. Есть ли способ иметь UIView с некоторым альфа-смешиванием, реагирующим на касания?

ответ

0

UIView не игнорирует штрихи, если его альфа не равна 0.0, или если для свойства 'hidden' установлено значение YES. Оба этих параметра делают UIView невидимым.

Я бы предложил использовать modal view controller - если нет какой-либо причины, по которой вы хотите показать другие кнопки. Вы бы установили отдельный контроллер просмотра для каждого модального представления, а не для прозрачного представления. Затем используйте для управления им метод currentModalViewController: animated:.

Обратите внимание, что контроллеры модального вида могут быть вложенными (можно вызвать другое), поэтому при необходимости вы можете иметь несколько цепей.

+0

Я только что создал тестовый проект, воссоздающий анимацию, которую у меня есть для диалогов, и действительно, только просмотр игнорирует штрихи в 0 alpha, поэтому я не уверен, в чем проблема. К сожалению для меня это не решает проблему, но отвечает на мой вопрос;) P.S. - Модальные контроллеры не будут работать для этих диалогов по нескольким причинам, но спасибо за это предложение. – Mattia

0

Если вы анимали альфа диалогового окна и хотите, чтобы диалоговое окно поддерживало взаимодействие во время анимации, вам необходимо использовать опцию UIViewAnimationOptionAllowUserInteraction при создании анимации.

+0

Спасибо за подсказку - я не знал об этом варианте. Однако моя проблема заключается не в том, что я хочу, чтобы пользователи взаимодействовали с диалогом во время его появления, но я не хочу, чтобы они могли взаимодействовать с чем угодно, кроме * диалога, пока он появляется. – Mattia

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