我在NSScrollView中有一个NSTextView。我将文本放在NSTextView中并以编程方式将其滚动到底部,这可以正常工作,但滚动条保持在顶部。使用鼠标定位滚动条会使其跳转到它所属的底部,从那时起它可以正常运行。
我的代码:
textView.string = s;
[textView scrollToEndOfDocument:self];
不要挂在scrollToEndOfDocument方法上 - 我也尝试过:
[textView scrollRangeToVisible:NSMakeRange(s.length, 0)];
和
[[scrollViewText contentView] scrollToPoint:NSMakePoint(0, textView.frame.size.height)];
[scrollViewText reflectScrolledClipView:[scrollViewText contentView]];
完全相同的问题,如下所示:
我通过添加一行来解决问题:
textView.string = s;
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate distantPast]];
[textView scrollToEndOfDocument:self];
不应该运行runUntilDate调用。我的理论是,它让NSScrollView有机会以某种方式赶上并同步自己。
这一切都在Lion上。我尝试将系统偏好设置为Lion" backwards"滚动和传统的前狮子滚动,结果相同。
关于:
的任何想法答案 0 :(得分:3)
尝试NSScrollView的reflectScrolledClipView:
编辑:如何更换
[[scrollViewText contentView] scrollToPoint:NSMakePoint(0, textView.frame.size.height)];
与
[scrollView.contentView scrollToPoint:NSMakePoint(0, scrollView.documentView.frame.size.height-scrollView.contentSize.height)];
因为我认为你正在滚动浏览文档视图的框架。