键盘附件视图隐藏文本

Posted

技术标签:

【中文标题】键盘附件视图隐藏文本【英文标题】:Keyboard accessory view hiding text 【发布时间】:2011-10-09 16:42:18 【问题描述】:

我有以下问题:我有一个标准的 UITextView,一旦键盘弹出,我就会调整它的大小。我还有另一个视图,我将其动画化(不是附加到键盘的标准附件视图)。问题是我不希望文本被这个视图隐藏。这就是我到达最后一行时发生的情况(橙色视图 = 我的自定义附件视图):

理想情况下,如果发生这种情况,我希望有一个自动滚动。但如果我在 UITextView 的最后一行,我不知道如何实现这一点。此外,scrollToVisible 在这种情况下不起作用,我不知道我是否可以使用 contentInset。

欢迎提出任何建议!谢谢。

编辑

我想我需要某种机制来允许

    如果我在最后一行输入内容,则仅将文本视图扩展到附件视图正上方的行 如果我没有编辑 LINE DIRECTLY ABOVE KEYBOARD,请将 textview 扩展到键盘。

这有意义吗?我想我需要的是 contentInset 的反面。

我只是不想将 textView 的大小调整到附件视图的上方,因为它会占用屏幕空间来显示文本。

【问题讨论】:

【参考方案1】:

我找到了解决方案——抱歉,我想这很明显,但我花了一整天的时间才弄明白:

textOfPage.contentInset = UIEdgeInsetsMake(0, 0, 100, 0);

这将抵消我的 UITextView 以使最后一行永远不会隐藏。 100 以像素为单位,可以进行相应调整。

【讨论】:

【参考方案2】:

我要做的是在textViewShouldBeginEditing 方法中调整textview 的大小以适合键盘和新添加的附件视图,然后在textViewShouldEndEditing 中关闭键盘时将其调整回全屏

【讨论】:

实际上,如何获取文本的最后一行并使用 textViewDidChangeSelection 找到它的宽度,如果它比某个数字更宽,您会自动在文本中附加一个换行符? 至于你的第一个建议,恐怕没有多大帮助,因为如果有更多的文字,我想有额外的空间。想象一下,您想编辑第 25 行,后面还有更多行(例如第 26、27、28 行)。你的建议会使我的 UITextView 更小,以便第 26、27、28 行等。如果我要编辑第 25 行,则不会显示。 至于你的第二个建议,如果用户不想有这个输入,我真的不想附加换行符。我想要的只是以某种方式剪辑可编辑但仍显示其余部分的视图(如上图所示)。 对不起,拉杜,我自己想出来的。我需要使用 textOfPage.contentInset = UIEdgeInsetsMake(0, 0, 100, 0); ...不过,感谢您的帮助!

以上是关于键盘附件视图隐藏文本的主要内容,如果未能解决你的问题,请参考以下文章

键盘隐藏另一个视图的文本字段动画

iOS如何向键盘添加视图

如何知道键盘何时隐藏文本字段?

如何在 UIView 中设置滚动视图以向上滑动被键盘隐藏的文本字段?

颤振键盘隐藏嵌套列表视图中的文本字段

我设置滚动视图偏移以显示被键盘隐藏的文本字段。如果用户在显示键盘时滚动,则滚动视图会向下捕捉