如何让我的UITextView在iOS 7下的屏幕高度减去键盘?

如何让我的UITextView在iOS 7下的屏幕高度减去键盘?,第1张

概述我的代码在iOS 6下运行正常,但在iOS 7下我似乎无法使我的UITextView设备屏幕高度减去键盘(换句话说,当键盘启动时,让UITextView仍然是全屏,但是不要去键盘下面). 首先,当我将UITextView放入我的视图控制器(嵌入在导航控制器中)时,它也必须位于导航栏下,否则它会开始太远. 从那里我尝试了所有这些例子: self.textView.contentInset = UI 我的代码在iOS 6下运行正常,但在iOS 7下我似乎无法使我的UITextVIEw设备屏幕的高度减去键盘(换句话说,当键盘启动时,让UITextVIEw仍然是全屏,但是不要去键盘下面).

首先,当我将UITextVIEw放入我的视图控制器(嵌入在导航控制器中)时,它也必须位于导航栏下,否则它会开始太远.

从那里我尝试了所有这些例子:

self.textVIEw.contentInset = UIEdgeInsetsMake(0,230,0);self.textVIEw.scrollindicatorInsets = UIEdgeInsetsMake(0,0);self.textVIEw.textContainerInset = UIEdgeInsetsMake(0,0);

每个键盘的位置仍然会在某些点上超过textvIEw.我也试过设置一个高度约束并 *** 纵常量,但没有运气.

self.height.constant = self.height.constant - 240.0;

(高度是约束的出口.)

这些都是在[self.textFIEld becomeFirstResponder]之前和之后尝试过的;呼叫.

我怎么做到这一点?我只想要一个全屏UITextVIEw,其中插入的东西不会出现在键盘下,但它在iOS 7下看起来很疯狂.

解决方法 在iOS7之前执行此 *** 作的“正确”方法一直是在键盘显示或隐藏时调整UITextVIEw(UIScrollVIEw子类)的contentInset属性.我没有亲自调查,但这似乎在iOS7中不能正常工作,因为底部插图要么没有兑现,要么光标仍然在键盘下面有一些问题. See this question for reference.

在您使用自动布局的情况下,您想要的只是一个“全屏”文本视图,您可以在键盘显示或隐藏时简单地调整单个约束.这将调整文本视图的高度:

@implementation TSVIEwController{    IBOutlet NSLayoutConstraint* _textVIEwSpacetoBottomConstraint;}- (voID) dealloc{    [[NSNotificationCenter defaultCenter] removeObserver: self];}- (voID)vIEwDIDLoad{    [super vIEwDIDLoad];    [[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(keyboarDWillShow:) name:UIKeyboarDWillShowNotification object:nil];    [[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(keyboarDWillHIDe:) name:UIKeyboarDWillHIDeNotification object:nil];}- (voID) keyboarDWillShow: (NSNotification*) n{    NSValue* bv = n.userInfo[UIKeyboardFrameEndUserInfoKey];    CGRect br = [bv CGRectValue];    _textVIEwSpacetoBottomConstraint.constant = br.size.height;}- (voID) keyboarDWillHIDe: (NSNotification*) n{    _textVIEwSpacetoBottomConstraint.constant = 0;}@end

在故事板中,将UITextVIEw放在视图控制器视图上,并添加4个约束,将其边缘粘贴到视图控制器视图的边缘.将底部空间约束连接到视图控制器中的IBOutlet _textVIEwSpacetoBottomConstraint.

您可以稍微玩一下并调整动画块内的大小,从键盘通知中借用动画时间和曲线.

我有兴趣看到一个设置contentInset的版本并使其正常工作……

编辑

Here is another SO question that covers this topic,with a solution.显然,插入符号(光标)出现问题的问题与我上面提到的问题相同. “正确”的方法,这是设置contentInset属性.因此,对此问题的修复应该使您能够简单地调整contentInset与更改文本视图框架(通过.frame或通过约束).

编辑2

最后一想到这一点.在iOS7中,键盘是半透明的.用户应该能够看到键盘后面的内容.通过将UITextVIEw的大小调整为位于键盘上方,这种情况永远不会发生.所以“正确”的解决方案仍然是调整文本视图底部的contentInset,将键盘的高度添加到文本视图的可滚动区域.然后,在理想的世界中,您将调整文本视图的contentOffset,以便在键盘出现时将插入符号保持在视图中.最后,添加“修复”以在显示但是用户输入换行符时将插入符号保持在键盘上方的位置.

总结

以上是内存溢出为你收集整理的如何让我的UITextView在iOS 7下的屏幕高度减去键盘?全部内容,希望文章能够帮你解决如何让我的UITextView在iOS 7下的屏幕高度减去键盘?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1100286.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存