主窗口(key window)

来源:互联网 发布:sql trigger insert 编辑:程序博客网 时间:2024/06/05 17:06

http://bbs.9ria.com/thread-250024-1-1.html

主窗口(key window)接受特定事件


  一个窗口当前能接受键盘和非触摸事件时,便被认为是主窗口。而触摸事件则被投递到触摸发生的窗口,没有相应坐标值的事件被投递到主窗口。同一时刻只有一个窗口是主窗口。

  大部分时间内,应用窗口是主窗口。由于iOS使用单独的窗口来显示警告视图(alert view)和输入附件视图(input accessory view),这些窗口也可以成为主窗口。例如,当一个讲稿视图或者输入附件视图有一个文本框,而用户当前正在这个文本框中输入,那么包含此输入视图的窗口便是主窗口。

  绝大多数应用窗口处在同一等级

  当你为应用创建一个新窗口时,UIVindow类自动赋给它一个等级,称为正常窗口等级(normal window level),这个等级对显示应用相关内容的窗口是合适的。这个等级,可以通过windowLevel属性来设置,它代表窗口相对其他窗口在z轴所处的位置。你可以使与应用相关的窗口在其他等级显示,但这不是必须的。

  除了用于显示应用相关内容的窗口外,还有一些高等级的窗口,他们显示一些需要悬浮在应用内容之上的信息。例如系统状态栏和警告等。

  每个窗口与一个显示设备关联

  UIWindow类的screen属相代表窗口当前用于显示的显示设备。这个属性包含一个屏幕对象,也就是UIScreen的一个实例,这个对象包含显示设备的信息,例如它的边框,模式,和亮度。

  屏幕对象也包括一些通知用来监听显示设备的变动。例如你可以注册显示设备的连接或断开,或者显示设备的模式或者亮度改变的通知。

  窗口通知帮助你监听变化

  iOS定义了许多表明窗口或者屏幕对象变化的通知。一般而言,这些通知对于支持外部显示器的应用是有帮助的。

  除了表明何时键盘是可见的通知(例如UIKeyboardDidShowNotification),UIWindow还定义了以下通知:

  1.   · UIWindowDidBecomeVisibleNotification
  2.   · UIWindowDidBecomeHiddenNotification
  3.   · UIWindowDidBecomeKeyNotification
  4.   · UIWindowDidResignKeyNotification
复制代码

  每当应用窗口发生编程变化时,UIWindow通知就会被投递。例如,当你的应用显示或者隐藏一个窗口时,UIWindowDidBecomeVisibleNotification和UIWindowDidBecomeHiddenNotification通知相应地就会被投递。值得注意的是,当应用转移到后台时,这些通知不会被投递:即便应用转到后台时,窗口不会显示,窗口在应用的上下文中仍然被认为是可见的。

  大多数应用不需要处理UIWindowDidBecomeVisibleNotification和UIWindowDidBecomeHiddenNotification通知,很少有应用拥有一个以上窗口。

  UIWindowDidBecomeKeyNotification 和 UIWindowDidResignKeyNotification能帮助你跟踪应用窗口何时是主窗口,何时不是。当你通过显示一个输入配件视图来或者用户输入时,你也许需要知道一个窗口是不是主窗口。

  窗口和屏幕支持少许其他任务

  一般来说,除了需要支持外接显示器这种情况外,你很少需要访问应用的窗口和屏幕对象。当应用启动后,也就是窗口被创建,加载,以及设置后,只有少许事情需要由窗口处理。

  · 使用窗口对象来转换点和矩形的坐标。例如,你有一个窗口坐标系中的值,,你可能想把它转换成一个特定视图坐标系中的值,然后使用。

  · 使用窗口的通知来跟踪窗口相关变化。窗口在显示和隐藏以及成为或放弃主窗口状态时,都会生成通知。你可以借助这些通知在应用的其他地方执行一些行动。

  类似地,只有个别原因才需要访问屏幕对象。其中一个原因是你需要调节屏幕的亮度。例如,你可以使用brightness属性让用户可以调节iOS设备的屏幕的亮度。你还可以通过wantsSoftwareDimming属性来表明应用需要将屏幕亮度调整到比中等亮度偏暗的级别。(需要注意的是,打开wantsSoftwareDimming可能会对性能有影响,因为这种昏暗是通过软件来实现的。)


原文链接:http://my.oschina.net/iOSFocus/blog/89224
0 0
原创粉丝点击