我有一个带有大量文本的 NSTextView。但是,每当我滚动时,视图都不会正确更新。视图的顶部或底部保留了一些工件。看起来视图本身刷新的频率不够高。如果我滚动得很慢,视图会正确更新。如果我在视图中添加边框一切正常,那么无边框视图就是有问题的视图。这是屏幕截图的链接:
谢谢
我有一个带有大量文本的 NSTextView。但是,每当我滚动时,视图都不会正确更新。视图的顶部或底部保留了一些工件。看起来视图本身刷新的频率不够高。如果我滚动得很慢,视图会正确更新。如果我在视图中添加边框一切正常,那么无边框视图就是有问题的视图。这是屏幕截图的链接:
谢谢
您是否为或设置了setDrawsBackground
和属性?copiesOnScroll
NSScrollView
NSClipView
我建议的第一件事是关闭以下的“绘制背景”属性NSScrollView
:
[myScrollView setDrawsBackground:NO];
请注意,这应该在 上设置NSScrollView
,而不是在嵌入式上NSClipView
。
文档中的以下摘录可能是相关的:
如果您将发送带有 的参数的消息
NSScrollView
附在中,则具有发送带有参数的消息的附加效果。将消息直接发送到的副作用是在文档视图滚动时出现“轨迹”(先前绘图的痕迹)。NSClipView
setDrawsBackground:
NO
NSScrollView
NSClipView
setCopiesOnScroll:
NO
setDrawsBackground:
NSClipView
看起来文本字段甚至不在滚动区域中......你确定有什么东西没有重叠吗?
我遇到了类似的麻烦 - 当 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];
}
前段时间我也遇到了同样的麻烦。我不记得我是如何解决的。
如果超级视图是自定义视图,请尝试将 NSTextView 放置到另一个视图。只是看看会发生什么。