iOS 8中的键盘视图表现得很奇怪

时间:2014-09-12 14:38:57

标签: uiscrollview ios8 uikeyboard

我当前在键盘处于活动状态时更改了滚动视图大小。我还使用箭头允许用户快速移动到下一个文本字段。我的scrollRectToVisible在垂直方向上无法正常工作。它正确地水平移动。我的小数点垫出了问题

2014-09-12 10:29:24.039 TS[1895:455658] Can't find keyplane that supports type 8 for keyboard iPhone-Portrait-DecimalPad; using 1425143906_Portrait_iPhone-Simple-Pad_Default

我还介绍了以下代码。

- (void)keyboardDidShow:(NSNotification *)n {
// Find top of keyboard input view
CGRect keyboardRect = [[[n userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
keyboardRect = [self.view convertRect:keyboardRect fromView:nil];
CGFloat keyboardTop = keyboardRect.origin.y;

// Resize scroll view
CGRect newScrollViewFrame = CGRectMake(0, 0, self.view.bounds.size.width, keyboardTop);
newScrollViewFrame.size.height = keyboardTop - self.view.bounds.origin.y;
[self.scrollView setFrame:newScrollViewFrame];
}

我注意到我的十进制键盘的keyboardRect是244而我的默认键盘是207。我不知道如何解决这个问题。此问题也只出现在iOS 8中。我的应用在iOS 7中没有任何问题。感谢您的帮助。

更新: 我发现当最初选择文本字段时,滚动视图会适当地移动。当您在键盘启动时选择另一个文本字段时,问题发生时。看来,scrollview将其大小重置为原始尺寸。为什么会这样?有没有办法阻止这种情况发生?

1 个答案:

答案 0 :(得分:0)

1)问题

请参阅此帖子:Xcode iOS 8 Keyboard types not supported

2)问题:

不确定你的意思。可能与iOS 8键盘类型有关。请记住,rect包含您添加的任何附件视图。

3)更新部分中的其他问题:

我遇到同样的问题,并找出一些线索。

我在viewcontroller.view中放置了一个滚动视图,并在该滚动视图中放置了一堆文本字段。我在UIKeyboardDidShowNotification和UIKeyboardWillHideNotification上调整滚动视图框架的大小。它在iOS7上工作正常,但在iOS8上,当您专注于另一个文本字段(成为第一响应者)时,scrollview将静默调整回正常大小。

我进一步研究了它。我有另一个页面,它是在iOS8升级之前创建的,并且仍然可以使用相同的逻辑完美地运行。但有一点不同的是,在该页面中,滚动视图是以编程方式添加的,而这个故障页面是自动布局(scrollview具有关于viewcontroller.view的所有边距零限制)。

所以我做了一个测试,在keyboardshow / hide上调整viewcontroller.view的框架和界限,问题就消失了。因此,我猜测iOS8会在查看第一响应者更改时添加整页重新布局(重新计算约束)。

不确定什么是最佳解决方案。当我找到处理这个问题的更好方法时,会更新这个答案。