可可 – 滚动NSTextView使滚动条处于错误的位置

我在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“向后”滚动和传统的前狮子滚动,结果相同.

任何想法:

>为什么我添加的电话有帮助,而且
>如何在没有电话的情况下使其工作?

解决方法

试试NSScrollView的reflectScrolledClipView:

编辑:如何更换
[[scrollViewText contentView] scrollToPoint:NSMakePoint(0,textView.frame.size.height)];

[scrollView.contentView scrollToPoint:NSMakePoint(0,scrollView.documentView.frame.size.height-scrollView.contentSize.height)];

因为它的立场我相信你滚动浏览文档视图的框架.

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...