以下是说明问题的最小工作示例:https://bitbucket.org/7331/firstrespondertest/。
在单视图应用程序启动后,将哪个对象设置为keyWindow
的第一响应者(假设我尚未与应用程序进行交互,并且我的代码未明确调用becomeFirstResponder()
)?
换句话说 - 什么对象将First Responder设置为初始值? (或者新创建的UIWindow
的第一响应者是什么?)
当我调试单一视图应用程序时,我检查了keyWindow
的第一响应者并发现它是nil
- 考虑到ViewController
,这看起来很奇怪设备被动摇时会调用motionBegan()
(尽管canBecomeFirstResponder()
返回false
)。
class ViewController: UIViewController {
override func canBecomeFirstResponder() -> Bool {
return false
}
override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent?) {
print("motionBegan")
}
}
此外:当我通过nib
加载UINib
文件时,nib
的子视图会在内部被becomeFirstResponder()
的初始化程序调用{{1}}吗?
*我使用UINib
的私有API来检查First Responder。
在LLDB:
UIWindow
。