我试图在包含浏览器的视图控制器的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方法。
答案 0 :(得分:0)
确保[ [ self scrollView ] documentView ]
≠nil
- 它可能仍为零。此外,您必须从主线程调用-scrollPoint
- 所有AppKit调用必须从主线程进行。