当新行添加到 UITextView 实例中时,如何向上滚动视图?

发布于 2024-12-10 18:00:06 字数 164 浏览 1 评论 0原文

我已经成功设置了一个滚动视图,可以将一些文本字段和文本视图向上移动,以防它们被键盘隐藏。但是,当文本视图收到一些超出第一行的文本时,下一行显然会被键盘隐藏。因此,我正在寻找一种技巧,以便每次在 UITextview 实例中添加/删除新行时向上/向下移动视图。

感谢您的帮助,

斯蒂芬

I've successfully setup a scroll view that move some text fields and a text view up in case they are hidden by keyboard. However, when the text view received some text that goes beyond the first line the next lines are obviously hidden by keyboard. So, I'm looking for a trick to move up/down the view each time a new line is added/removed into/from the UITextview instance.

Thx for helping,

Stephane

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

李白 2024-12-17 18:00:06

您可以

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

在 UITextView 委托上实现该方法,计算 textviews 文本中的换行符数量,计算必须滚动的距离,然后滚动。 (每次用户键入字符时都会调用此方法。)

或者,您可以采用更简单的路线并滚动到足够远以显示整个 UITextView。如果用户输入的内容超出了文本视图的范围,文本视图将自动开始滚动。

You can implement the

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

method on your UITextView delegate, count the number of newlines in the textviews text, calculate how far you have to scroll, and scroll. (This method is called every time the user types a character.)

Alternatively you can go the easier route and scroll far enough to display your entire UITextView. If the user types more than fits into the textview, the textview will start scrolling automatically.

初雪 2024-12-17 18:00:06

使用 scrollRectToVisible:animated:setContentOffset:animated: - 在您的情况下,使用第一个,如下所示:

[scrollView scrollRectToVisible:textField.frame animated:YES];

您可能还需要将文本字段内容滚动到可见,但我认为这应该自动发生。

Use scrollRectToVisible:animated: or setContentOffset:animated: - in your case, the first, as in:

[scrollView scrollRectToVisible:textField.frame animated:YES];

You may also need to scroll your text field contents to visible, but I think that should happen automatically.

琉璃繁缕 2024-12-17 18:00:06

因此,如果您编译以前的答案:

只需将您的 textView.delegate 设置为 self 并将您的 viewController 设置为 并且:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    [textView scrollRangeToVisible:range];
    return YES;
} 

So if you compile previous answers :

Just set your textView.delegate as self and your viewController as <UITextViewDelegate> and :

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    [textView scrollRangeToVisible:range];
    return YES;
} 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文