显示键盘时调整UITextView的问题,在iOS 7中
我只针对iOS7。
我想在显示键盘时调整UITextView
的大小,以便能看到所有的文本,而不是隐藏在键盘后面。
我已经考虑了一些不同的方法来…
1)当键盘显示时,改变UITextView
的框架。
下面的问题详细说明了与这种方法相同的问题 – 尽pipe正确设置了框架,但最后一行/光标将超出UITextView
的界限,因此不可见:
UITextView光标在帧更改帧之后
你可以从下面的屏幕截图中看到这个效果。 UITextView
有一个绿色的背景。 它已被添加到一个红色背景的UIView
。 箭头显示光标所在的位置
2)更改UITextView
上的contentInset
属性
我相信这个build议/首选的方法。 请注意,我已经阅读了苹果文档,以基于键盘出现/消失来调整视图大小:
https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html#//apple_ref/doc/uid/TP40009542-CH5-SW7
用我的代码,当我更改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
这个问题的答案build议在iOS 7上使用textContainerInset
而不是contentInset
:
UITextView contentInset无法在iOS 7上的UITextView中工作?
我也试过这个,但仍然没有设法调整UITextView
大小。
在这个问题中,'mann'在contentInset
和textContainerInset
也有问题:
UITextView内容底部不工作的iOS7
问题
- 这是正确/首选的方法,
textContainerInset
或contentInset
? - 在上面显示的代码中设置
contentInset
,我错过了什么? 还有什么我需要设置? - 这些与iOS 7的错误?
谢谢
这是iOS 7中的一个bug。Pete Stenberger用UITextView的子类解决了这个问题。 你可以在这里find它:
https://github.com/steipete/PSPDFTextView
以下是更多信息:
http://petersteinberger.com/blog/2014/fixing-uitextview-on-ios-7/
- 将UIKeyboardFrameEndUserInfoKey转换为视图或窗口坐标
- iOS在LoginView上login后切换到另一个ViewController / View
- 在iOS应用程序中构build信息(build立date/时间应用程序)
- iphone sdk CGAffineTransform获取对象的旋转angular度
- 如何在iPhone应用程序中创build类似Spotlight的search栏?
- 如何在不使用TexturePacker的情况下在Cocos2D中添加animation图像?
- Swift:cellForRowAtIndexPath不按indexPaths的顺序调用
- AVPlayer播放单声道audio立体声 – >单声道
- 用CocoaTouchFramework中的CocoaPods 0.36.0与Swift一起使用