当应用程序在后台时如何在键盘前显示keyWindow?

UIApplication.shared.keywindow?.addSubview(self.backgroundImage)

我会尝试这个:

let windowCount = UIApplication.shared.windows.count

UIApplication.shared.windows[windowCount-1].addSubview(self.backgroundImage)

没有

我用键盘打东西,然后按home键。我返回应用程序时只需要显示背景图像,但应用程序在backgroundImage前面显示键盘

jian123789 回答:当应用程序在后台时如何在键盘前显示keyWindow?

包含键盘的窗口是一个,它的级别高于keyWindow。因此,您在self.backgroundImage中在keyWindow中无法覆盖键盘。

建议:

在应用进入背景时调用window.resignFirstResponder()

更好的方式:

将您的backgroundImage添加到键盘窗口中

if let keyboardWindow = applicationKeyboardWindow {
    keyboardWindow.addSubview(self.backgroundImage)
}

var applicationKeyboardWindow: UIWindow? {
   var windows = UIApplication.shared.windows.filter { win -> Bool in
        let descri = String(describing: type(of: win))
        return descri == "UITextEffectsWindow" || descri == "UIRemoteKeyboardWindow"
    }
    windows.sort(by: { $0.windowLevel > $1.windowLevel } )
    return windows.first
}
,

您只需在要在resignFirstResponder()中显示键盘的组件(例如:UITextField/UITextView)上调用viewWillDisappear(_:),即

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    self.textField.endEditing(true)
}

在上面的代码中,将self.textField替换为特定的输入元素。

本文链接:https://www.f2er.com/3161761.html

大家都在问