macos - 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。
解决方案
我们遇到了同样的问题。经过几天的实验,我们设置问题的原因如下:
我们需要绘制的文档可能非常大。因此,我们优化了 NSView 的 drawRect 方法中的绘图,仅根据剪辑矩形绘制文档的可见部分:
NSRect clipRect = [nsClipView bounds];
这在 Mojave 之前效果很好。
在 Mojave 下,我们的代码将在文档中滚动到可见区域的部分显示为黑色。
我们更改了绘图例程以准确显示由 drawRect 方法的“脏矩形”指示的区域:
- (void)drawRect:(NSRect)dirtyRect
现在滚动在 Mojave 下工作。
推荐阅读
- python - Lambda 不会检测到层
- javascript - 如何仅更新javascript中二维数组的给定索引?
- nginx - webrtc coturn tls 或 nginx ssl 安全问题
- c# - ASP NET Core 中 HttpGet 中的分组依据
- python - 通过 Matplotlib 导出时,图形的图例被剪掉了
- javascript - 如何从不返回值的嵌套函数返回值
- azure - 无法在 azure Ml studio 中使用推荐器拆分来拆分数据集
- database - 主数据和维度数据有什么区别
- javascript - Vue路由器 beforeRouteEnter - 刷新页面后,按钮名称消失
- android - Jetpack Compose 带对讲的焦点指令