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