Suis en utilisant le code ci-dessous pour get la hauteur du keyboard qui varie en IPhone 5s périphérique avec ios8 par rapport à IPhone4s périphérique avec ios7 .En conséquence, mon textfield se déplace très haut quand je tape dessus dans IPhone5s avec ios8 tandis que le même code fonctionne très bien dans IPhone 4s avec ios7.Can quelqu'un guide comment le problème peut être résolu dans les deux versions.
- (void)keyboardWasShown:(NSNotification*)notification { NSDictionary* info = [notification userInfo]; CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; float kbHeight; if (([UIApplication sharedApplication].statusBarOrientation== UIDeviceOrientationPortraitUpsideDown)||([UIApplication sharedApplication].statusBarOrientation== UIDeviceOrientationPortrait)) { kbHeight=kbSize.height; } else { kbHeight=kbSize.width; } UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbHeight, 0.0); self.scroll.contentInset = contentInsets; self.scroll.scrollIndicatorInsets = contentInsets; CGRect rect = self.view.frame; rect.size.height -= (kbHeight); if (!CGRectContainsPoint(rect, self.activeField.frame.origin)) { CGPoint scrollPoint = CGPointMake(0.0, self.activeField.frame.origin.y - ((kbHeight) - self.activeField.frame.size.height)); [self.scroll setContentOffset:scrollPoint animated:NO]; } }
Simplement replace la ligne de votre code
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
Avec
CGSize kbSize = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
Laissez-moi savoir si cela fonctionne
Ce n'est pas un problème, vous obtenez un keyboard de taille différente parce que Predictive
est Enable
.
La hauteur du keyboard est de 216, ce qui est fixe, mais lorsque Predictive
est activé, vous aurez 253 comme hauteur.
Vous devez donc écrire du code pour les deux conditions.
utiliser ce code, peut vous aider
- (void)keyboardWillShow:(NSNotification*)note { NSDictionary* info = [note userInfo]; CGSize _kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; float kbHeight = _kbSize.width > _kbSize.height ? _kbSize.height : _kbSize.width; }
Hauteur variable stockée kbHeight du keyboard.