滚动UITextView到底部

我正在制作一个具有UITextView和一个button的应用程序。

当我点击button时,会在UITextView添加一些文本。

但是当点击button时,我不想向下滚动到文本框的底部,这样用户就可以看到最后添加的文本。

如何使UITextView向下滚动到底部?

我试过了:

 int numLines = LogTextView.contentSize.height / LogTextView.font.lineHeight+1; NSLog(@"%d",numLines); NSUInteger length = self.LogTextView.text.length; self.LogTextView.selectedRange = NSMakeRange(0, length); 

但它不会工作…

我也试过:

 self.LogTextView.contentSize=CGSizeMake(length,0); 

如果你正在讨论UITextView,你可以使用下面的代码:

 -(void)scrollTextViewToBottom:(UITextView *)textView { if(textView.text.length > 0 ) { NSRange bottom = NSMakeRange(textView.text.length -1, 1); [textView scrollRangeToVisible:bottom]; } } 

如果您在iOS 7或更高版本中遇到问题,请尝试此操作。 看到这个答案 。

 - (void)scrollTextViewToBottom:(UITextView *)textView { NSRange range = NSMakeRange(textView.text.length, 0); [textView scrollRangeToVisible:range]; // an iOS bug, see https://stackoverflow.com/a/20989956/971070 [textView setScrollEnabled:NO]; [textView setScrollEnabled:YES]; } 

随着Swift 3

 let bottom = self.textView.contentSize.height - self.textView.bounds.size.height self.textView.setContentOffset(CGPoint(x: 0, y: bottom), animated: true) 

你必须实现一个委托方法。 下面的代码说。 如果你打回来。 滚动到textView的底部

 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if ([text isEqualToString:@"\n"]) { textView.contentOffset = CGPointMake(0.0, textView.contentSize.height); } return YES; } 

这对我有用! :d

 CGPoint bottomOffset = CGPointMake(0, self.textView.contentSize.height - self.textView.bounds.size.height); [self.description1 setContentOffset:bottomOffset animated:YES]; 

将范围,指定编码,指定到最后一个字符,然后滚动到该范围根据您的内容,utf8以外的内容可能是合适的

 let range = NSMakeRange(self.OutputTextView.text.lengthOfBytes(using: String.Encoding.utf8), 0); self.OutputTextView.scrollRangeToVisible(range);