我试图在包含浏览器的视图控制器的 loadView 方法中自动滚动到水平图像浏览器的最右侧。当我尝试这样做时它不起作用(只是滚动到 x=1000 作为测试):
- (void)loadView {
[super loadView];
// Set initial position
[[[self scrollView] documentView] scrollPoint:NSMakePoint(1000.0, 0.0)];
}
但是在调试过程中的某个时刻,我发现这可行:
- (void)loadView {
[super loadView];
// Set initial position
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(scrollToRight) userInfo:nil repeats:NO];
}
其中 scrollToRight 只是一个与上面做同样事情的实例方法。
有谁知道为什么会这样?是因为我是在 loadView 方法中做的吗?scrollPoint: 不能从主线程调用吗?
更新:我做了一些额外的实验,比如订阅 NSViewFrameDidChangeNotificaiton 并在此基础上滚动,但这也不起作用。到目前为止,我能够让滚动发生的唯一方法是使用 NSTimer,或者通过从父窗口控制器调用视图控制器的 scrollToRight 方法。