【问题标题】:scroll problems with NSTableView in a custom view embedded in an NSScrollViewNSTableView 在嵌入在 NSScrollView 中的自定义视图中的滚动问题
【发布时间】:2014-10-12 21:23:47
【问题描述】:

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

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

更新:这是嵌入在滚动视图中的表格视图在 Tweetbot 中正常工作的主流示例(假设这些部分是表格视图)

【问题讨论】:

  • 时间线快照看起来很像基于部分的表格视图。
  • 好点,这是一个不好的例子,感谢您指出。

标签: cocoa nstableview appkit nsscrollview


【解决方案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 种单元格的表格视图,一种用于“节标题”,另一种用于“单元格”。

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

【讨论】:

  • +1 表示基于部分的方法。那将是一个更干净的实现。
  • 感谢 Krzysztof,成功了。 NSScrollView 上没有 scrollEnabled 属性,但没关系,反正我没有禁用它。
  • 是的,抱歉,忘记添加了,它需要在头文件中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2021-10-16
  • 1970-01-01
相关资源
最近更新 更多