ios - 在 iOS 7 中显示键盘时出现问题 'Resizing' UITextView

标签 ios cocoa-touch ios7 uitextview

我只针对 iOS7。

我想在显示键盘时“调整”UITextView 的大小,以便可以看到所有文本,而不是隐藏在键盘后面。

我考虑过几种不同的方法...

1) 在键盘显示时更改 UITextView 的框架。

以下问题详细说明了我在使用此方法时遇到的相同问题 - 尽管框架设置正确,但最后一行/光标将超出 UITextView 的范围,因此超出范围视线:

UITextView cursor below frame when changing frame

您可以从以下屏幕截图中看到这种效果。 UITextView 具有绿色背景。它已被添加到具有红色背景的 UIView 中。箭头显示光标所在的位置...

enter image description here

2) 更改 UITextView

上的 contentInset 属性

我相信这种推荐/首选的方法。请注意,我已阅读有关根据键盘出现/消失调整 View 大小的 Apple 文档:

https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html#//apple_ref/doc/uid/TP40009542-CH5-SW7

使用我的代码,当我更改 UIEdgeInsets 的底部组件时,我没有任何效果。

与上面相同的示例,红色 UIView 上的绿色 UITextView,文本在键盘下方消失:

enter image description here

代码如下:

- (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”在 contentInsettextContainerInset 方面也有问题:

UITextView content Inset Bottom not working iOS7

问题

  • 哪个是正确/首选方法,textContainerInsetcontentInset
  • 在上面显示的用于设置 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/

相关文章:

ios - 是否可以在呈现屏幕的层次结构中的特定元素处呈现 UIViewController 以符合 Google Admob 政策?

iphone - 关联对象何时被释放?

iphone - 停用 UIScrollView 减速

ios - 捆绑 index.ios.js 时内置卡在 0.0%

ios - HTTPS 请求无法在 iOS Safari 上验证证书

iphone - UIKit 字符串绘制方法中的错误?

cocoa-touch - 为什么不总是调用已注册的 UIDeviceOrientationDidChangeNotification?

ios7 - iOS 7 BLE 无法重新连接配对设备

iphone - View Controller 的全局实例是否应该由应用程序委托(delegate)拥有

ios - 当用户按下按钮时显示 SplitViewController?