ios UIWindow 错误使用导致无法接收motionEnded(摇一摇)函数

今天遇到一个问题,第一次运行程序时,- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event函数无法调用,第二次就好了。找了1天,终于找到了原因。在第一次运行时,显示了一个帮助页面,而这个页面当时是使用再加一层UIWindow来实现的,显示时调用了makeKeyAndVisible这个函数,导航结束后,也没有把原始的window设置为key。在ios8上没什么问题,但是在ios9上,原始的window就无法接收motionEnded等摇一摇事件了,但是点击等手势事件没问题。改法就是不用makeKeyAndVisible,仅仅使用sethidden来显示新的UIwindow。

 看看什么叫做key window,这个在ios中没有具体说明,在mac里有说明

The Key Window

The key window responds to user input, whether from the keyboard, mouse, or alternative input devices, for an application and is the primary recipient of messages from menus and panels. Usually, a window is made key when the user clicks it. Each application can have only one key window at a given time.

简单得说,在ios上,key window 就是 能够接收事件的最顶级的view。

posted @ 2015-09-17 17:49  幻化成疯  阅读(956)  评论(0编辑  收藏  举报