在NSScrollView中嵌入的自定义视图中滚动NSTableView问题

时间:2014-10-12 21:23:48

标签: cocoa nstableview appkit nsscrollview

我的应用中有一个右侧面板区域,它是一个高竖直自定义视图(让我们称之为列视图),其中包含2个tableviews。每个tableview都不会滚动,虽然它们嵌入在标准的clipview和scrollview中,但tableview的垂直高度与它包含的总行数相同,并且禁用了bounce。随着行数的增加,背景列视图的高度增加,需要垂直滚动。它也嵌入在scrollview中。这听起来比现在更复杂,这是一张照片:

enter image description here

只要鼠标指针不在红色框内,即在tableviews上,滚动背景列视图就可以正常工作。无论鼠标位于列视图中的哪个位置,我都希望能够垂直滚动。有什么想法吗?

更新:这是一个主流示例,其中嵌入在scrollview中的tableviews在Tweetbot中正常工作(假设这些部分是tableviews)

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您想在另一个(红色区域)内有滚动视图。您需要禁用内部滚动视图scrollWheel操作。您可以通过编写自定义NSScrollView子类并添加以下方法来实现此目的:

- (void)scrollWheel:(NSEvent *)theEvent {
  // If scroll is disabled, send action to next responder
  if (self.scrollEnabled == NO) {
     [self.nextResponder scrollWheel:theEvent];
  }
  else {
     [super scrollWheel:theEvent];
  }
}

但是不要认为你需要在其他滚动视图中有滚动视图。相反,您可以使用一个包含2种单元格的表格视图,其中一种用于“标题”标题'以及其他用于' cell'。

这样你就有了一个包含多个部分的表格视图 - 就像在iOS中一样。