Mer*_*yth 5 keyboard uiviewcontroller ios swift ios16
在 iOS 16 之前,我可以通过使用以下代码在键盘上呈现 UIViewController 而无需关闭它:
if let window = UIApplication.shared.windows.last,
String(describing: type(of: window)).equals("UIRemoteKeyboardWindow") {
let presentingVC = window.rootViewController
presentingVC.present(self.myViewController, animated: animated)
}
Run Code Online (Sandbox Code Playgroud)
我尝试在模拟器中运行此代码,在 iPhone 13 上模拟 iOS 16。
不幸的是,在打开键盘的情况下运行此代码(像以前一样),“UIRemoteKeyboardWindow”不再出现在窗口中。
我只找到了“UITextEffectsWindow”,但从那里呈现“myViewController”,它显示在键盘下。
有没有人遇到过这个问题并且知道如何通过键盘启动 UIViewController 而不关闭它?
我需要这段代码主要是因为我有自定义选择器,允许用户输入更新 UI 的值,而无需关闭键盘。
更新:
我在使用 iOS 16 的 iPhone 13 模拟器上从当前稳定的 Xcode 版本 (13.4.1) 构建并运行了该应用程序,现在我可以找到 UIRemoteKeyboardWindow。我曾经从 Xcode 版本 14 beta 启动该应用程序。由于 Xcode beta 版本,找不到 UIRemoteKeyboardWindow 会出现错误吗?
在iOS16中UIRemoteKeyboardWindow是看不到windows数组的UIApplication。
可以访问UIInputWindowController任何parent.inputViewController
然后,您可以呈现任何视图控制器,而UIInputWindowController无需隐藏键盘。
如果您使用自定义输入视图控制器(而不是键盘),您应该观察UIResponder.keyboardWillChangeFrameNotification得到
inputViewController.parent
Run Code Online (Sandbox Code Playgroud)
如果您仅使用键盘输入,则应该创建一个假输入视图控制器,使您的视图控制器成为启动时的第一响应者,捕获UIResponder.keyboardWillChangeFrameNotification以存储UIInputWindowController对象,然后退出第一响应者以立即隐藏假输入视图。
代码示例
class SomeViewController: UIViewController {
private var currentInputViewController: UIInputViewController?
private var keyboardWindowController: UIViewController?
override var inputViewController: UIInputViewController?
isFirstResponder ? currentInputViewController : nil
}
init() {
super.init()
// some code
NotificationCenter.default.addObserver(self, selector: #selector(storeKeyboardWindowController), name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
}
@objc private func storeKeyboardWindowController() {
if let vc = currentInputViewController?.parent {
keyboardWindowController = vc
}
}
@objc func inputViewButtonClicked() {
let vc = AnotherViewControoler()
keyboardWindowController?.present(vc, animated: true)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2584 次 |
| 最近记录: |