I have an app on the store, in order to support all devices and keyboard I am changing the bottom constraint height according to keyboard height. It is working on all iOS versions except on iOS11. The button is not changing its place as it is shown in the below pictures.
Thank you!
CODE
func keyboardWillShow(notification: NSNotification) {
if !keyboardIsHidden{
return;
}
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
keyboardIsHidden = false
nextButtonBottmConstraint.constant = nextButtonBottmConstraint.constant + keyboardSize.height
}
}
If you are using UIKeyboardWillShowNotification
to get the keyboard height then change UIKeyboardFrameBeginUserInfoKey
with UIKeyboardFrameEndUserInfoKey
UIKeyboardFrameBeginUserInfoKey returns 0 for keyboard rect height value in iOS 11. Changing it to UIKeyboardFrameEndUserInfoKey might solve this issue.
Objective-C
- (void)keyboardWasShown:(NSNotification*)aNotification {
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
//Change constraints
}
Swift 3
func keyboardWasShown(_ aNotification: Notification) {
let info = aNotification.userInfo
let kbSize: CGSize? = info?[UIKeyboardFrameEndUserInfoKey]?.cgRectValue?.size
//Change constraints
}