【一个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.
截图如下
先说结论,稍后验证:
在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(透明度)是零的话,是不能响应任何交互的。
Created: 05/17/2015
Link: http://www.cnblogs.com/ChenYilong/p/4510954.html
Link: http://www.cnblogs.com/ChenYilong/p/4510954.html