滚动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);