新浪微博 有道云笔记 麦库 EverNote Pocket Instapaper 更多

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

【一个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(透明度)是零的话,是不能响应任何交互的。
 
posted @ 2015-05-18 01:04  iTeaTime(技术清谈)  阅读(2318)  评论(0编辑  收藏  举报