gpt4 book ai didi

ios - 如果我从另一个已经显示键盘的 View Controller 转换过来,如何检测当前是否显示键盘?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:39:22 25 4
gpt4 key购买 nike

我有一个 View Controller ,它在 ViewWillAppear 上创建一个 UITextField firstResponder。通常我只能依靠 UIKeyboardWillShow 通知来检测键盘是否已显示,但如果我在键盘已经显示时进入当前 View Controller ,则不会触发。

有人有什么想法吗?

最佳答案

我在调试 View 层次结构时注意到,当显示键盘时,层次结构中有 UIRemoteKeyboardWindow

首先,我们可以向 UIApplication 添加扩展以检查 UIRemoteKeyboardWindow 的窗口层次结构:

extension UIApplication {
var isKeyboardPresented: Bool {
if let keyboardWindowClass = NSClassFromString("UIRemoteKeyboardWindow"), self.windows.contains(where: { $0.isKind(of: keyboardWindowClass) }) {
return true
} else {
return false
}
}
}

然后在viewDidLoad,或者需要的地方我们可以检查:

if UIApplication.shared.isKeyboardPresented {
print("Keyboard is presented")
}

尽管此方法未经过全面测试并且 UIRemoteKeyboardWindow 位于私有(private) header 中,这就是为什么需要 NSClassFromString 进行检查的原因。放心使用!

关于ios - 如果我从另一个已经显示键盘的 View Controller 转换过来,如何检测当前是否显示键盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32643727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com