0

我试图在包含浏览器的视图控制器的 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 方法。

4

1 回答 1

0

确保[ [ self scrollView ] documentView ]nil——它可能仍然为零。此外,您必须-scrollPoint从主线程调用——所有 AppKit 调用必须从主线程进行。

于 2012-11-10T22:37:15.823 回答