2011-06-02 101 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