我只针对 iOS7。
我想在显示键盘时“调整”UITextView
的大小,以便可以看到所有文本,而不是隐藏在键盘后面。
我考虑过几种不同的方法...
1) 在键盘显示时更改 UITextView
的框架。
以下问题详细说明了我在使用此方法时遇到的相同问题 - 尽管框架设置正确,但最后一行/光标将超出 UITextView
的范围,因此超出范围视线:
UITextView cursor below frame when changing frame
您可以从以下屏幕截图中看到这种效果。 UITextView
具有绿色背景。它已被添加到具有红色背景的 UIView
中。箭头显示光标所在的位置...
2) 更改 UITextView
contentInset
属性
我相信这种推荐/首选的方法。请注意,我已阅读有关根据键盘出现/消失调整 View 大小的 Apple 文档:
使用我的代码,当我更改 UIEdgeInsets
的底部组件时,我没有任何效果。
与上面相同的示例,红色 UIView
上的绿色 UITextView
,文本在键盘下方消失:
代码如下:
- (void)keyboardWillShow:(NSNotification*)notification
{
CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIEdgeInsets insets = _textView.contentInset;
insets.bottom += keyboardSize.height;
_textView.contentInset = insets;
_textView.scrollIndicatorInsets = insets;
}
注意:scrollIndicatorInsets
部分工作正常。很难用屏幕截图来描述,但滚动指示器在正确的位置开始和停止,并且看起来大小正确。
我读过很多问题,人们遇到了类似的问题。
3) 更改 UITextView
textContainerInset
这个问题的答案建议在 iOS 7 上使用 textContainerInset
而不是 contentInset
:
UITextView contentInset not working in UITextView on iOS 7?
我也试过了,但仍然无法调整 UITextView
的大小。
在这个问题中,“mann”在 contentInset
和 textContainerInset
方面也有问题:
UITextView content Inset Bottom not working iOS7
问题
- 哪个是正确/首选方法,
textContainerInset
或contentInset
? - 在上面显示的用于设置
contentInset
的代码中,我是否遗漏了什么?我还需要设置什么吗? - 这些错误是 iOS 7 的吗?
谢谢
最佳答案
这是 iOS 7 中的一个错误。Pete Stenberger 使用 UITextView 的子类解决了这个问题。你可以在这里找到它:
https://github.com/steipete/PSPDFTextView
这里有更多信息:
http://petersteinberger.com/blog/2014/fixing-uitextview-on-ios-7/
关于ios - 在 iOS 7 中显示键盘时出现问题 'Resizing' UITextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20597992/