1

我有一个狭窄的UITextView(大约 1 行高),我只以编程方式添加文本,在text单击按钮时设置它的属性。我还手动处理光标位置,selectedRange在文本更改时设置。只要我只有一行文字,一切都很好。

当我有两行或多行文本并尝试在第一行插入文本时,文本已正确插入并且光标位置仍在正确位置但UITextView滚动到底部。然后,当我在顶部添加另一段文本时,它会向上滚动到“正确”位置。然后,此模式在除最后一行之外的每一行重复输入,使 UITextView 为每个按下的按钮向上和向下滚动。

UITextView scrollRangeToVisible:在设置新文本后,我还尝试调用将 selectedRange 属性作为参数传递。那也没有用。

selectedRange在设置text. 然后它可以正常工作,但只有在第UITextView一次向下滚动到底部 0.5 秒之后。这似乎表明setTextUITextView 的方法在某种程度上是异步的,并且在我已经设置selectedRange或调用之后完成scrollRangeToVisible,并将 UITextView 重新调整到它认为是所需的。

谁能告诉我发生了什么,以及如何解决这个问题。

谢谢!

4

2 回答 2

0

s的自动滚动行为UITextField有时很烦人并且难以驾驭。

您是否需要用户手动编辑文本?如果没有,请使用 multiline UILabel

如果是,也使用多线并在用户点击后UILabel即时交换它。UITextView重新打开它didEndEditing。这种技术在表格视图中对我很有效。

于 2013-03-25T21:32:22.050 回答
0

我解决了这个问题!在开始创建自定义输入视图的迷宫时,我开始实现UITextInput并发现UITextInput协议声明了许多有趣的方法。令人敬畏的是UITextView实现了该协议。因此,即使它不在即时UITextViewAPI 参考中,您也可以UITextInput调用UITextView. 例如insertText:(来自UIKeyInput协议)和replaceRange:withText:. 他们使以编程方式使用UITextView. 希望这也可以帮助其他人!

于 2013-03-27T08:57:29.097 回答