我有一个包含聊天室的应用程序。每当有人在其中输入内容时,我希望它向下滚动到输入的最后一行。基本上,我希望最后输入的东西是屏幕上最低的东西。当我输入十行聊天文字时,它就会直接落在我的视野之下。这是我的代码:
- (void)scrollToBottom
{
CGRect lastLine;
lastLine.origin.x = 0;
lastLine.origin.y = self.contentSize.height-1;
lastLine.size.height = 1;
lastLine.size.width = 1;
[self scrollRectToVisible:lastLine animated:NO];
}
我在使用此代码发布内容后调用此内容:
- (void)displayChatMessage:(NSString*)message fromUser:(NSString*)userName {
[chat appendTextAfterLinebreak:[NSString stringWithFormat:@"%@: %@", userName, message]];
[chat scrollToBottom];
}
我将appendTextAfterLinebreak称为,其代码为:
- (void)appendTextAfterLinebreak:(NSString *)text
{
self.text = [[self.text stringByAppendingString:@"\n"] stringByAppendingString:text];
}
答案 0 :(得分:0)
假设您使用的是UITextView
,则可以使用scrollRangeToVisible:
轻松滚动到最后一行。例如:
- (void)scrollToBottom {
NSRange bottom = NSMakeRange(chat.text.length - 1, 1);
[chat scrollRangeToVisible:bottom];
}
答案 1 :(得分:0)
假设您使用的是UIScrollView
,则可以使用以下代码。
- (void)scrollToBottomAnimated:(BOOL)animated {
CGFloat y = myScrollView.contentSize.height - myScrollView.frame.size.height;
[myScrollView setContentOffset:CGPointMake(0, y) animated:animated];
}