2011-06-02 105 views
1

我有嵌入自定義NSScrollView子內的NSTableView,其中我有的時候編程滾動,像這樣:定製NSScrollView不滾動NSTableHeaderView

[[self contentView] scrollToPoint:newOffset]; 
[self reflectScrolledClipView:[self contentView]]; 

當我做到這一點,NSTableView春聯罰款,但其關聯的NSTableHeaderView不隨之移動。然而,如果我使用我的鼠標並正常滾動NSScrollView,它們就會像他們應該一起移動。

我想我可能只是錯過了某個地方的某一行,讓NSTableHeaderView知道它應該滾動,但我不知道那是什麼。誰能幫忙?

+0

您是否嘗試過使用'-documentView'而不是'-contentView'? – 2011-06-02 21:33:23

+0

@Bavarious我現在有。它不起作用。 :P儘管如此,儘管使用'-documentView'而不是'-contentView'並不會帶來太多意義, '-documentView'返回'NSTableView',而'-contentView'返回'NSClipView'。在這種情況下,我很確定我需要'NSClipView'。 – 2011-06-03 18:22:29

回答

2

嗯,我不知道在滾動包含NSTableHeaderViewNSScrollViewNSScrollView時,引擎蓋下究竟是什麼樣的黑色魔法,但它看起來像是在內部處理它。爲了規避這個問題,我現在只滾動NSTableView編程方式(通過重寫將處理用戶輸入的功能),然後我滾動NSTableHeaderView自己,就像這樣:

NSTableHeader *header = [[self documentView] headerView]; 
[header setBoundsOrigin:NSMakePoint(newOffset.x,[header bounds].origin.y)]; 
+0

黑魔法是NSScrollView檢查文檔視圖中的「headerView」方法/屬性,如果找到,則以這種方式處理它。除了這個郵件列表,我沒有找到任何可以找到的地方:http://lists.apple.com/archives/cocoa-dev/2009/Jun/msg01464.html – 2016-03-29 22:10:41