2009-07-23 96 views
2

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

我构建了一个测试应用程序,以在将其添加到我的应用程序之前确定这个概念。 UITextView中的文本将更新为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]; 

}

我记得落实在另一个应用程序开发我前一阵子andfrom我记得代码类似于一个非常类似的功能。唯一的区别是以前的应用程序是针对iPhone OS 2的,但是这个针对的是3.0。我在一些论坛上读到,当在Interface Builder中创建UITextView时,3.0 beta版在滚动时遇到了一些问题。我检查了current release notes,我没有看到任何指示。

编辑:由于文本在UITextView中更新,因此调用IB操作。并且选中“可取消的内容接触”。

编辑:证实了相同的代码工作在2.2.1但不是3.0

回答

3

我发现用户点击UITextView后,滚动开始工作。所以,当我装这期特别是我临时设置的UITextView为FirstResponder,那么作为的UITextField FirstResponder:

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

自动发生的,尽管它似乎比我在iPhone OS想起2.

不太平滑滚动,然后
0

你确定IBAction为获取调用?如果是这样,请尝试确保在Interface Builder中选中“可取消内容接触”。这应该可以解决你在帖子中暗示的问题。

+0

我知道该操作正在被调用,因为文本更新。是的,我看到检查“可取消内容触摸”修复了3.0中的问题。我应该在原文中包含这些细节。 “可取消内容触摸”背后的详细信息 – 2009-07-23 17:29:36