我已经能够在所有其他视图(包括键盘)之上放置一个半透明视图,以使用以下代码为屏幕着色:
int count = [[[UIApplication sharedApplication]windows]count];
[[[UIApplication sharedApplication] windows] objectAtIndex:count-1]addSubview:tintView];
现在我遇到了一个问题。我的应用程序使用 MessageUI.framework 来显示一个 MFMessageComposeViewController,它允许用户发送文本消息。这是我遇到问题的地方。
当我在这种情况下执行上述代码时(显示消息视图时),它可以正常工作。问题是,用户不能再与它下面的消息视图交互。我一直在我的 tintView 上将 userinteractionenabled 设置为 NO,但在这种情况下,它对问题没有帮助。
但是,将 tint view hidden 设置为 YES 确实允许交互。通过更改此属性可以与消息视图进行交互。不过,显然我希望 tintView 可见。
我在最顶层的 UIWindow 中对视图进行 NSLogged 处理,发现 UIRemoteView(我找不到任何相关信息,但似乎是在 MessageUI.framework 中显示视图的内容)是当 tintView 位于其上方时未接收到触摸的视图。
我如何允许与 MFMessageComposeViewController 交互,即使它上面显示了另一个 UIView。Userinteractionenabled 在这种情况下不起作用,但是将视图设置为隐藏(这不是我想要的)可以。