使用下面的代码来获取iPhone is设备与ios8相比的键盘高度与使用ios7的IPhone4s设备相比有所不同。因此,当我使用ios8在IPhone5s中点击它时,我的文本字段移动得非常高,而相同的代码工作正常在iphone7的iPhone 4s中很好。有人可以指导如何在两个版本中修复问题。
- (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];
}
}
答案 0 :(得分:2)
只需替换代码中的行
即可CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
用
CGSize kbSize = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
让我知道它是否有效
答案 1 :(得分:1)
这不是问题,因为Predictive
为Enable
,您的键盘大小不同。
键盘的高度 216 已修复,但当Predictive
启用时,您将获得 253 作为高度。
所以你必须为这两个条件编写代码。
答案 2 :(得分:0)
使用此代码,可以帮助您
- (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;
}
kbHeight变量存储键盘的高度。