Я смог поместить полупрозрачный вид поверх всех остальных видов, включая клавиатуру, чтобы подкрасить экран с помощью этого кода:
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 не работает, но установка скрытого представления (, что не то, что я хочу ), работает.