2

我正在我的应用程序中实现一些简单的文本聊天功能,但我在以UITextView编程方式滚动时遇到问题。我正在使用UITextView在 Interface Builder 中创建的,它将新行和一些文本附加到预先存在的文本中。添加新文本后,它应该滚动到底部。

在将其添加到我的应用程序之前,我构建了一个测试应用程序来确定这个概念。UITextView更新中的文本使用 a中的文本进行更新UITextField,但不会发生滚动。

- (IBAction)enteredText {

CGPoint currentPosition = [textWindow contentOffset];
[textWindow setText:[NSString stringWithFormat:@"%@\n%@", textWindow.text, textInput.text]];
[textWindow setContentOffset:currentPosition animated:NO];
[textWindow scrollRangeToVisible:NSMakeRange([textWindow.text length], 0)];
[textInput setText:@""];
[textInput becomeFirstResponder];

}

我记得在我不久前开发的另一个应用程序中实现了一个非常相似的功能,并且我记得代码是相似的。唯一的区别是早期的应用程序是针对 iPhone OS 2 而这个是针对 3.0。我在一些论坛上读到,当UITextView在 Interface Builder 中创建 3.0 beta 时,滚动出现了一些问题。我检查了当前的发行说明,但没有看到任何迹象。

编辑:调用 IB 操作是因为 UITextView 中的文本已更新。并选中“可取消的内容触摸”。

编辑:确认相同的代码适用于 2.2.1 但不适用于 3.0

4

2 回答 2

3

我发现在用户点击 UITextView 后,滚动开始起作用。所以在我加载这个特定视图后,我暂时将 UITextView 设置为 FirstResponder,然后将 UITextField 设置为 FirstResponder:

[myChatRoomViewController.chatWindow becomeFirstResponder];
[myChatRoomViewController.input becomeFirstResponder];

滚动然后自动发生,尽管它似乎不如我在 iPhone OS 2 中记忆的流畅。

于 2009-07-28T19:05:01.410 回答
0

你确定 IBAction 被调用了吗?如果是这样,请尝试确保在 Interface Builder 中选中“Cancellable Content Touches”。这应该可以解决您在帖子中暗示的问题。

于 2009-07-23T16:56:47.420 回答