ali*_*ego 6 xcode ios inputaccessoryview swift uialertcontroller
我有一个聊天应用程序的inputAccessoryView,它始终保持可见状态,并且停靠在屏幕底部,用于类似于大多数消息收发应用程序的文本输入。
当我呈现带actionSheet样式的alertController时,在呈现警报时,inputAccessoryView会在屏幕外动画,然后在解除警报时再次备份。这又会滚动我的tableView,这是不可取的。
之所以发生这种情况,是因为在显示警报时,聊天viewController放弃了firstResponder。
无论如何,当它的视图resignsFirstResponder出现时,是否要呈现一个alertController而不放弃firstResponder,还是将inputAccessoryView停靠在屏幕底部?
该InputAccessoryView坐在你的ViewController的层次结构之外的-它包含在UITextEffectsWindow其RootViewController的是UIInputWindowController。同样,键盘也包含在UIRemoteKeyboardWindow它自己的键盘中UIInputWindowController。
因此,如果我们从最上方的窗口或更高的窗口(UITextEffectsWindow或UIRemoteKeyboardWindow)显示警报,则该警报不会辞职。
我找到的最简单的解决方案是:
let topViewController = UIApplication.shared.windows.last!.rootViewController!
topViewController.present(alert, animated: true, completion: nil)
理想情况下,您可以安全地处理这些可选项。一个可能更好的解决方案(我已经从以前的解决方案中看到了一些控制台错误)将是创建一个具有更高WindowLevel的新UIWindow,使其成为关键窗口并可见,然后从那里显示警报。
| 归档时间: |
|
| 查看次数: |
664 次 |
| 最近记录: |