Как создать прозрачное наложение на весь экран, включая активную клавиатуру

Я смог поместить полупрозрачный вид поверх всех остальных видов, включая клавиатуру, чтобы подкрасить экран с помощью этого кода:

int count = [[[UIApplication sharedApplication]windows]count];
[[[UIApplication sharedApplication] windows] objectAtIndex:count-1]addSubview:tintView];

Теперь я столкнулся с проблемой. Мое приложение использует MessageUI.framework для отображения MFMessageComposeViewController, который позволяет пользователю отправлять текстовые сообщения. Вот тут я сталкиваюсь с проблемой.

Когда я выполняю приведенный выше код в этом случае (, когда в представлении сообщения отображается ), он работает правильно. Проблема в том, что пользователь больше не может взаимодействовать с представлением сообщений под ним. Я установил для userinteractionenabled значение NO на моем tintView, но в этом случае это не помогает.

Однако установка для скрытого вида оттенка значения YES разрешает взаимодействие. Что-то делает, изменяя это свойство, позволяя взаимодействовать с представлением сообщения. Очевидно, я хочу, чтобы tintView был виден.

Я NSLogged представления в самом верхнем UIWindow и обнаружил, что UIRemoteView (, о котором я не мог найти никакой информации, но, похоже, это то, что отображает представления в MessageUI.framework ), является представлением, не получающим касание, когда tintView находится над ним.

Как я могу разрешить взаимодействие с MFMessageComposeViewController, даже если над ним отображается другой UIView. В этом случае Userinteractionenabled не работает, но установка скрытого представления (, что не то, что я хочу ), работает.

5
задан NSProgrammer 1 March 2014 в 15:46
поделиться