使用自定义 UIWindow 时第一响应者的问题
Problems with first responder when using a custom UIWindow
当使用自定义 UIWindow 完成应用中的特定行为时,我在以编程方式设置第一响应者时遇到了问题,例如覆盖视图控制器的 inputAccessoryView
或 textField.becomeFirstResponder()
.
为了使 UIWindow 子类可见,我一直在使用:
window.makeKeyAndVisible()
window.isHidden = false
问题在于应用程序的密钥 window 是将尝试成为第一响应者的密钥,因此如果您将自定义 window 设置为密钥 window(通过调用 window.makeKeyAndVisible()
),这将是 iOS 在需要以编程方式调用第一响应者时抓取的对象。
为避免这种情况,仅当您确实需要它成为第一响应者时才将其设置为键 window(例如,它是具有文本字段的 window)。否则,仅设置 window.isHidden = false
就足以显示 window.
// NOTE: Do not call makeKeyAndVisible() because that messes up with the main window's first responder
isHidden = false
当使用自定义 UIWindow 完成应用中的特定行为时,我在以编程方式设置第一响应者时遇到了问题,例如覆盖视图控制器的 inputAccessoryView
或 textField.becomeFirstResponder()
.
为了使 UIWindow 子类可见,我一直在使用:
window.makeKeyAndVisible()
window.isHidden = false
问题在于应用程序的密钥 window 是将尝试成为第一响应者的密钥,因此如果您将自定义 window 设置为密钥 window(通过调用 window.makeKeyAndVisible()
),这将是 iOS 在需要以编程方式调用第一响应者时抓取的对象。
为避免这种情况,仅当您确实需要它成为第一响应者时才将其设置为键 window(例如,它是具有文本字段的 window)。否则,仅设置 window.isHidden = false
就足以显示 window.
// NOTE: Do not call makeKeyAndVisible() because that messes up with the main window's first responder
isHidden = false