在使用自定义UIWindow完成应用中的某些行为时,以编程方式设置第一个响应程序时遇到了问题。覆盖视图控制器的inputAccessoryView
或textField.becomeFirstResponder()
。
要使UIWindow子类可见,我一直在使用:
window.makeKeyAndVisible()
window.isHidden = false
答案 0 :(得分:0)
问题出在以下事实上:应用程序的密钥窗口是将尝试成为第一响应者的密钥窗口,因此,如果将自定义窗口设置为密钥窗口(通过调用window.makeKeyAndVisible()
),它将成为当需要以编程方式调用第一个响应程序时,iOS将对其进行爬网。
为避免这种情况,仅在实际需要它成为第一响应者时才将其设置为关键窗口(例如,它是具有文本字段的窗口)。否则,仅设置window.isHidden = false
就足以显示窗口。
// NOTE: Do not call makeKeyAndVisible() because that messes up with the main window's first responder
isHidden = false