首页 > 解决方案 > NSScrollView 未在 Mojave OSX 10.14 中刷新其文档视图

问题描述

任何人在 NSScrollView 中对您的自定义 NSView 有问题?我有一个带有自定义 NSView 的 NSScrollView,它使用它的 draw(rect:) 函数来完成所有工作。

在 OSX 10.14 之前,每次滚动视图被标记为 setNeedsDisplay,documentView 也会刷新。在 OSX 10.14 上,我也需要专门将 doucmentView 标记为 setNeedsDisplay。看起来它忽略了 NSScrollView.contentView.copiesOnScroll 属性。

有没有人有类似的问题或指向我发布说明?NSAppKit 发行说明没有说明 NSScrollView。

标签: macoscocoansscrollviewmacos-mojave

解决方案


我们遇到了同样的问题。经过几天的实验,我们设置问题的原因如下:

我们需要绘制的文档可能非常大。因此,我们优化了 NSView 的 drawRect 方法中的绘图,仅根据剪辑矩形绘制文档的可见部分:

NSRect clipRect = [nsClipView bounds];

这在 Mojave 之前效果很好。

在 Mojave 下,我们的代码将在文档中滚动到可见区域的部分显示为黑色。

我们更改了绘图例程以准确显示由 drawRect 方法的“脏矩形”指示的区域:

- (void)drawRect:(NSRect)dirtyRect

现在滚动在 Mojave 下工作。


推荐阅读