Подкласс NSView - drawRect: не вызывается
Я создалNSView
подкласс называетсяDAView
, включая множество полезных методов для последующего повторного использования. Это прекрасно работает, однако,drawRect:
никогда не вызывается ни в каких классах, которые используютDAView
ни в самом классе. Зачем?
Вот'шоуDAView
похоже:
DAView
@interface DAView : NSView
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
self.backgroundColor = [NSColor clearColor];
// Make layer-backed by default
self.wantsLayer = YES;
// Create a root layer
CALayer *_rootLayer = [CALayer layer];
_rootLayer.shouldRasterize = YES;
_rootLayer.name = DAViewRootLayerDefaultName;
self.layer = _rootLayer;
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect // never called
{
NSLog(@"Draw Rect called");
}
Теперь, если бы я хотел использовать этоDAView's
дополнения / методы, я сталкиваюсь с той же проблемой. Все отлично работает, кромеdrawRect:
, который, как в 'DAView
Случай, никогда не вызывается:
DATableView
@interface DATableView : DAView
- (void)drawRect:(NSRect)dirtyRect // never called either
{
[[NSColor grayColor] set];
NSBezierPath *_cellSeparator = [NSBezierPath bezierPath];
[_cellSeparator lineToPoint:dirtyRect.origin];
[_cellSeparator closePath];
[_cellSeparator stroke];
NSLog(@"Draw rect");
}
Однако, если я изменюсьDATableView
заголовок s должен быть подклассом,NSView
drawRect:
называется. Что мне не хватает?