1

我在这里寻找一个最小的可行示例。我已经搜索和阅读了好几天了,但我找不到一个最新的资源。

我的 NSControl 工作正常,但只要我添加

+ (Class)cellClass {
    return [MYCustomCell class];
}

我得到这个输出,我的窗口停止正确绘制

<Error>: kCGErrorFailure: CGSShapeWindow
<Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
_NXPlaceWindow: error setting window shape (1000)
<Error>: kCGErrorFailure: CGSShapeWindow
_NSShapeRoundedWindowWithWeighting: error setting window shape (1000)

我已经阅读了我能找到的关于这个主题的所有内容(包括 Apple 文档),但是对于正确实施来说,一切似乎都还很模糊。如果有人能指出我正确的方向(正确的代码示例或文章),我将不胜感激。

4

1 回答 1

4

我相信我终于找到了答案。

-cellSize 方法必须在您的 NSCell/NSActionCell 子类中被覆盖。经过大量堆栈跟踪后,我发现此方法将返回 (40000, 40000) 作为您的单元格大小,如果它没有被覆盖,从而产生我们看到的大小错误。由于我的 NSActionCell 子类有特殊需要,需要单元格占据整个 NSControl 的绘图区域,所以我简单地使用了以下内容。

- (NSSize)cellSize {
    return self.controlView.bounds.size;
}

希望这对您的情况有所帮助。

于 2012-08-31T17:21:02.133 回答