2014-09-12 78 views
10

我当前在键盘处于活动状态时更改了滚动视图的大小。我还使用箭头让用户快速移动到下一个文本框。我的scrollRectToVisible在垂直方向上无法正常工作。它水平移动正确。我一直有一个问题,我的小数点iOS 8中的键盘视图奇怪

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将其大小重置为原始尺寸。为什么会发生?有没有办法阻止这种情况发生?

+0

我在使用ios 8.4,Xcode 6.4中的scorllview和autoresizing时面临同样的奇怪行为。快速解决这个问题的方法是在textField委托方法中调整ScrollView的框架 - (void)textFieldDidEndEditing:(UITextField *)textField。 – 2015-08-25 07:35:42

回答

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增加了整个页面重新布局(重新计算约束)对视图第一响应者的变化。

不知道什么是最好的解决方案。当我找出更好的方式来处理这个问题时,会更新这个答案。

+0

我完全可以看到与自动布局有关的问题。最近我没有太多时间来测试。但是我会尝试改变自动布局,看看会发生什么。谢谢 – jmr1706 2014-10-15 18:12:37