NSTextView 滚动时未正确刷新

发布于 2024-07-18 18:44:48 字数 302 浏览 3 评论 0 原文

我有一个带有大量文本的 NSTextView。 然而,每当我滚动时,视图都不会正确更新。 有一些工件保留在视图的顶部或底部。 看来视图本身刷新得不够频繁。 如果我滚动得很慢,视图会正确更新。 如果我向视图添加边框,一切都会完美运行,无边框视图就是有问题的。 以下是屏幕截图的链接:

谢谢

I have a NSTextView with a sizeable quantity of text. Whenever I scroll however, the view isn't updated properly. There are some artifacts that remain at the top or the bottom of the view. It appears that the view doesn't refresh itself often enough. If I scroll very slowly the view updates correctly though. If I add a border to the view everything works perfectly, borderless view is the one that has a problem. Here's a link to a screenshot:

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

西瓜 2024-07-25 18:44:48

您是否为 NSScrollViewNSClipView 设置了 setDrawsBackgroundcopiesOnScroll 属性?

我建议的第一件事是关闭 NSScrollView 的“绘制背景”属性:

[myScrollView setDrawsBackground:NO];

请注意,这应该在 NSScrollView 上设置,而不是 em> 在嵌入的 NSClipView 上。

以下摘录自 文档可能相关:

如果您的 NSScrollView 包含一个 NSClipView,则将参数为 NOsetDrawsBackground: 消息发送到 < code>NSScrollView 具有向 NSClipView 发送参数为 NOsetCopiesOnScroll: 消息的附加效果。 将 setDrawsBackground: 消息直接发送到 NSClipView 的副作用是,当文档视图滚动时,会出现“轨迹”(先前绘图的痕迹) .

Have you set the setDrawsBackground and copiesOnScroll propertes for either the NSScrollView or the NSClipView?

The first thing I would suggest is turning off the "draws background" property of the NSScrollView:

[myScrollView setDrawsBackground:NO];

Note that this should be set on the NSScrollView, and not on the embedded NSClipView.

The following excerpt from the documentation may be relevant:

If your NSScrollView encloses an NSClipView sending a setDrawsBackground: message with a parameter of NO to the NSScrollView has the added effect of sending the NSClipView a setCopiesOnScroll: message with a parameter of NO. The side effect of sending the setDrawsBackground: message directly to the NSClipView instead would be the appearance of “trails” (vestiges of previous drawing) in the document view as it is scrolled.

梦在深巷 2024-07-25 18:44:48

看起来文本字段甚至不在滚动区域中...您确定没有什么东西与它重叠吗?

Looks like the text field isn't even in the scrolling-area... Are you sure something isnt overlapping it?

我做我的改变 2024-07-25 18:44:48

我遇到了类似的麻烦 - 当 NSTextView 嵌入到另一个滚动视图(即 NSTableView)中时,会出现工件。

实际上,我打开 setdrawsbackground,然后添加一个漂亮的颜色以使其再次消失。

-(void)awakeFromNib{
    NSScrollView *scroll = [self enclosingScrollView];
    [scroll setBorderType:NSNoBorder];
    [scroll setDrawsBackground:YES];
    [scroll setBackgroundColor:[NSColor windowBackgroundColor]];
}

这与scrollWheel事件相结合让我可以在NSTableView中使用NSTextView。

-(void)scrollWheel:(NSEvent *)theEvent{
    NSScrollView *scroll = [self enclosingScrollView];
   [[scroll superview] scrollWheel:theEvent];
}

I had a similar trouble - artifacts develop when the NSTextView is embedded in another scrollview (ie. a NSTableView).

I actually turned on the setdrawsbackground, and then added a nice color to make it disappear again.

-(void)awakeFromNib{
    NSScrollView *scroll = [self enclosingScrollView];
    [scroll setBorderType:NSNoBorder];
    [scroll setDrawsBackground:YES];
    [scroll setBackgroundColor:[NSColor windowBackgroundColor]];
}

This in combination with a scrollWheel event let me use the NSTextView in a NSTableView.

-(void)scrollWheel:(NSEvent *)theEvent{
    NSScrollView *scroll = [self enclosingScrollView];
   [[scroll superview] scrollWheel:theEvent];
}
挽清梦 2024-07-25 18:44:48

前段时间我也遇到过同样的麻烦。 我不记得我是怎么解决的。

如果超级视图是自定义视图,请尝试将 NSTextView 放置到另一个视图。 只是为了看看会发生什么。

I had the same trouble some time ago. I don't remember how I solved it.

Try to place the NSTextView to another view if the superview is a custom view. Just to see what will happen.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文