0
我想在包含瀏覽器的視圖控制器的loadView方法中自動滾動到水平圖像瀏覽器的最右側。當我嘗試這樣做(只是滾動到x = 1000作爲測試),這是行不通的:爲什麼[[NSScrollView documentView] scrollPoint:]在loadView方法中不工作?
- (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方法。
嗯,我試圖設置scrollPoint的documentView不是零。它出現爲。另外,我詢問了線程,因爲它在NSTimer中作爲選擇器方法完成時工作。這是在主線上嗎? –
bellkev
@bellkev:取決於您在哪個線程上安排定時器。 (另外,「選擇器方法」沒有意義,選擇器是方法的名稱。) –