NSScrollView 滚动后在 Xcode 5 中显示问题

Posted

技术标签:

【中文标题】NSScrollView 滚动后在 Xcode 5 中显示问题【英文标题】:NSScrollView displaying problems in Xcode 5 after scrolling 【发布时间】:2013-09-23 14:17:41 【问题描述】:

NSScrollView 基于自定义视图(图像、复选框和文本标签)显示 NSTableView。当我滚动时 - 我有延迟(错误?)重绘行。

普通:

滚动后出现问题:

项目(和 .xib 文件)已从 Xcode 4 更新为 Xcode 5 格式。我认为这个错误出现在它之后,但我不确定。

有什么建议可以解决吗?

NSTableViewDataSource、NSTableViewDelegate协议的实现:

- (NSInteger) numberOfRowsInTableView: (NSTableView *) aTableView 
return [arrayOfObjects count];


- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row 
    CMListItem *currentObject = [arrayOfObjects objectAtIndex: row];
    NSString *currentName = [currentObject name];
    BOOL currentState = [currentObject state];
    NSImage *currentImage = [currentObject getArtwork];
    NSString *identifier = [tableColumn identifier];

    if ([identifier isEqualToString:@"MainCell"]) 
        CMTableCellView *cellView = [tableView makeViewWithIdentifier: identifier owner: self];
        cellView.textField.stringValue = currentName;
        cellView.button.state = currentState;
        cellView.imageView.image = currentImage;
        return cellView;
    
    return nil;

NSScrollView 未修改。 我自己的表格单元格视图 - NSTableCellView 的子类,几乎没有额外的出口。

更新:这件事帮助了我:将所有NSTableView 设置为On 状态Can Draw Concurrently,然后将其转换为Off 状态。

【问题讨论】:

是的,我确定,这只是一个示例。我的 NSScrollView 上有残像,就像这张图片一样(只是无法上传我自己的图片 - 评分不够)。 dl.dropboxusercontent.com/u/41688771/1.tiff - 正常, dl.dropboxusercontent.com/u/41688771/2.tiff - 滚动后 好吧,请告诉我们如何实现滚动视图委托方法。 我用我的代码修改了原始帖子,希望它有助于找到解决方案)我没有更多的代码,可以在这张桌子上工作。 【参考方案1】:

我想我有时会在启用“滚动复制”时看到这个问题。尝试在 IB 中禁用此选项(在属性检查器、滚动视图部分、行为中)。

【讨论】:

谢谢!您的回答帮助我找到了解决方案。不知道为什么,但是当我为所有 NSTableView 树打开“可以同时绘制”时,这个问题就解决了。但是每秒帧数太低,我将其关闭(对于所有树)。现在 - 良好的 FPS,而且没有这种滞后。真的不知道发生了什么,但它有帮助!也许是 Xcode 4 -> Xcode 5 转换问题,也许是其他问题..

以上是关于NSScrollView 滚动后在 Xcode 5 中显示问题的主要内容,如果未能解决你的问题,请参考以下文章

NSScrollview 不以编程方式滚动?

带有 CA 图层掩码的 NSScrollView 添加了第二个无用的滚动条

如何在 NSScrollView 中控制 NSTableView 的绘制?

如何在 NSScrollView 中强制重绘内容

将 NSPredicateEditor 添加到 NSScrollView 时出现 UI 故障

在 NSScrollView 中嵌入字段编辑器