UITextView自动滚动的解决方案

简介: 思路:UIView加载完成3后,用NSTimer结合setContentOffset将UITextView向下滚动1像素。在滚动到底部的时候停止NSTimer。每当手动滚动UITextView前销毁NSTimer,滚动后重新创建NSTimer。

思路:UIView加载完成3后,用NSTimer结合setContentOffset将UITextView向下滚动1像素。在滚动到底部的时候停止NSTimer。每当手动滚动UITextView前销毁NSTimer,滚动后重新创建NSTimer。

NSTimer *timer;
- (void)viewDidLoad {
	[self performSelector:@selector(resetText) withObject:nil afterDelay:3.0f];
}

- (void)resetText {	
	[timer invalidate];
	timer = nil;
	timer = [NSTimer scheduledTimerWithTimeInterval: 0.06
											 target: self
										   selector:@selector(onTick:)
										   userInfo: nil repeats:YES];
}

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
	[timer invalidate];
	timer = nil;
	NSLog(@"scrollViewWillBeginDragging");
	[self performSelector:@selector(resetText) withObject:nil afterDelay:3.0f];
}
- (void) onTick:(NSTimer*)theTimer {
	CGPoint pt = [textView contentOffset];
	CGFloat n = pt.y + 1;
	[textView setContentOffset:CGPointMake(pt.x, n)];	
	if (n> (textView.contentSize.height-textView.bounds.size.height)) {
		[theTimer invalidate];
		theTimer = nil;
		[timer invalidate];
		timer = nil;
	}
}

最后 不要忘了实现

UIScrollViewDelegate

 

相关文章
iOS-UITextView设置行间距,内容颜色(变相设置类似UITextField的placeholder)
iOS-UITextView设置行间距,内容颜色(变相设置类似UITextField的placeholder)
394 0
iOS-UITextView设置行间距,内容颜色(变相设置类似UITextField的placeholder)
|
iOS开发
iOS ScrollView嵌套tableview左右滑动时禁止上下滑动
iOS ScrollView嵌套tableview左右滑动时禁止上下滑动
2202 0
|
Android开发
RecycleView 不显示、显示不全及滑动卡顿
RecycleView 出现的不显示或显示不全。ScrollView中嵌套RecycleView滑动出现卡顿。
661 0
|
Android开发
关于DialogFragment全屏方案
DialogFragment默认情况下就算给内部布局设置match_parent也不是全屏。于是网上就有很多的方案,讲讲我所遇到的坑。 1.给window设置高度 很多地方都是用这样的写法 Window dialogWindow = getDialog().
1775 0