使用自定义UIWindow时,第一响应者存在问题

时间:2019-04-16 00:46:27

标签: ios swift uiwindow

在使用自定义UIWindow完成应用中的某些行为时,以编程方式设置第一个响应程序时遇到了问题。覆盖视图控制器的inputAccessoryViewtextField.becomeFirstResponder()

要使UIWindow子类可见,我一直在使用:

window.makeKeyAndVisible()
window.isHidden = false

1 个答案:

答案 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