【一个iOS官方文档错误】关于keyWindow是否可以接受触摸事件?

时间:2021-08-25 05:49:36
【一个iOS文档错误】关于keyWindow是否可以接受触摸事件?
 
关于keyWindow,官方文档有一个解释: 同一时间只有一个window可以成为keyWindow,keyWindow可以接受键盘和非触摸事件,(iOS6遵守此行为,但是iOS7和iOS8在模拟上没有遵守此行为)

原文如下

    The key window is the one that is designated to receive keyboard and other non-touch related events.
Only one window at a time may be the key window.
 

截图如下

【一个iOS官方文档错误】关于keyWindow是否可以接受触摸事件?

先说结论,稍后验证:

在iOS6以前的条件下, 文档是正确的。 但是在iOS7和iOS8上经过验证:keyWindow是可以接受触摸事件的。 推测是Apple修改了这个功能,但是没有更新文档导致的。

具体证明过程见下:

新建一个自定义的UIWindow:MyWindow,并将该MyWindow设置为keyWindow,在MyWindow中添加如下代码:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"别摸我");
}
 

点击屏幕后,可以打印。得出结论:在iOS7和iOS8上:keyWindow是可以接受触摸事件的。

 
注意: 在将MyWindow设置为keyWindow时记得,设置MyWindow的背景颜色,如果不设置,是不能够打印的!因为UIView的alpha(透明度)是零的话,是不能响应任何交互的。
 
【一个iOS官方文档错误】关于keyWindow是否可以接受触摸事件?