0

ブラウザを含むView ControllerのloadViewメソッドで、水平なimagebrowserの右端に自動的にスクロールしようとしています。これを実行しようとすると機能しません (テストとして 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: not を呼び出せますか?

更新: NSViewFrameDidChangeNotificaiton にサブスクライブし、それに基づいてスクロールするなど、いくつかの追加の実験を行いましたが、それも機能しません。これまでのところ、スクロールを発生させることができた唯一の方法は、NSTimer を使用するか、ビュー コントローラーの scrollToRight メソッドを親ウィンドウ コントローラーから呼び出すことです。

4

1 に答える 1

0

[ [ self scrollView ] documentView ]≠であることを確認してくださいnil-- おそらくまだ nil です。また、-scrollPointメイン スレッドから呼び出す必要があります。すべての AppKit 呼び出しは、メイン スレッドから行う必要があります。

于 2012-11-10T22:37:15.823 に答える