inputAccessoryView animating down when alertController (actionSheet) presented
The InputAccessoryView
sits outside of your ViewController's hierarchy - it's contained in the UITextEffectsWindow
whose rootViewController is a UIInputWindowController
. Similarly the keyboard is contained in UIRemoteKeyboardWindow
and its own UIInputWindowController
.
So, if we present the alert from the topmost window or higher (UITextEffectsWindow
or UIRemoteKeyboardWindow
), it won't resign first responder.
The simplest solution I've found is:
let topViewController = UIApplication.shared.windows.last!.rootViewController!
topViewController.present(alert, animated: true, completion: nil)
Ideally you would safely handle those optionals. A potentially better solution (I've seen some console errors from the previous solution) would be to create a new UIWindow with a higher WindowLevel, make it the key window and visible, and present the alert from there.