ios8中的键盘高度不同
Posted
技术标签:
【中文标题】ios8中的键盘高度不同【英文标题】:keyboard height varies in ios8 【发布时间】:2014-11-17 11:35:22 【问题描述】:我使用下面的代码来获取键盘高度,它在带有 ios8 的 iPhone 5s 设备中与带有 ios7 的 iPhone4s 设备中有所不同。因此,当我在带有 ios8 的 iPhone5s 中点击它时,我的文本字段移动得非常高,而相同的代码工作在带有 ios7 的 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];
【问题讨论】:
问题是什么? @Legoless 我认为问题是“有人可以帮助我吗?” :) 是的,因为键盘高度不同,我的应用程序面临一些问题..我怎样才能获得键盘的实际高度 【参考方案1】:只需替换代码中的行
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
与
CGSize kbSize = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
让我知道它是否有效
【讨论】:
【参考方案2】:这不是问题,因为Predictive
是Enable
,所以您得到了不同尺寸的键盘。
键盘高度为216,这是固定的,但当Predictive
启用时,您将获得253作为高度。
所以你必须为这两种情况编写代码。
【讨论】:
当预测文本开启时如何获取键盘高度? 来自相同的代码,正如我在上面的答案中所说,如果预测为 ON,您将获得 253 作为高度,否则为 216 禁用预测后尝试运行代码,得到一致的高度 不,我的朋友 568 在横向模式下不是高度而是宽度。我还在横向模式下测试了你的代码,预测键盘的高度是 193,没有 162。【参考方案3】:使用此代码,可能会对您有所帮助
- (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 变量存储的键盘高度。
【讨论】:
以上是关于ios8中的键盘高度不同的主要内容,如果未能解决你的问题,请参考以下文章