多个UIWindows和触摸事件

时间:2013-07-11 01:51:11

标签: ios objective-c uiwindow

我创建了第二个窗口并将其添加到默认值上面:

[topWindow makeKeyAndVisible];
topWindow.hidden = NO;

它可以工作,但我的顶部窗口阻止了应用程序默认窗口的访问。我想知道如果在屏幕的给定位置我的顶部窗口中没有元素(如示例按钮),我们可以访问下面默认窗口的元素。

我希望这是可以理解的。 对不起我的英语不好。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

  

我创建了第二个窗口并将其添加到顶部

所以,我认为通常的期望是iOS应用中每个屏幕只有一个窗口。 The docs seem to imply this

  

每个应用都有一个窗口,可在基于iOS的设备显示屏上显示应用的用户界面。如果外部显示器连接到设备,则应用程序也可以创建第二个窗口以在该显示器上显示内容。

iOS可能只是假设每个屏幕只有一个窗口,因此hit-testing process只考虑一个窗口,可能是关键窗口。由于您将第二个窗口设置为关键窗口,因此我建议您在创建第二个窗口后创建第一个窗口键,看看是否会改变。如果第一个窗口接收到触摸而第二个窗口没有接收到触摸就不足为奇了。如果您发现是这种情况,您可以对UIWindow进行子类化,覆盖-hitTest:withEvent:以将事件传递给其他窗口(如果未找到命中视图),然后将该子类用于您的两个窗口。

否则,如果您无法使其工作,请考虑返回单个窗口并使用不同的视图。您的问题与Make this view appear in every view, inside the app有些相似,而my suggestion创建自己的容器视图控制器可能会对您有所帮助。