Cocoa 如何将NSButton添加到CALayer?

Cocoa 如何将NSButton添加到CALayer?,cocoa,calayer,ikimagebrowsercell,Cocoa,Calayer,Ikimagebrowsercell,我试图在IKImageBrowserCell对象内的层上添加NSButton。我发现这篇文章很有帮助,但它并没有触及问题的关键。 我已经试过了: - (CALayer *) layerForType:(NSString*) type { CGColorRef color; //retrieve some usefull rects NSRect frame = [self frame]; NSRect imageFrame = [self imageFrame]

我试图在IKImageBrowserCell对象内的层上添加NSButton。我发现这篇文章很有帮助,但它并没有触及问题的关键。 我已经试过了:

- (CALayer *) layerForType:(NSString*) type
{
    CGColorRef color;

    //retrieve some usefull rects
    NSRect frame = [self frame];
    NSRect imageFrame = [self imageFrame];
    NSRect relativeImageFrame = NSMakeRect(imageFrame.origin.x - frame.origin.x, imageFrame.origin.y - frame.origin.y, imageFrame.size.width, imageFrame.size.height);

    /* foreground layer */
    if(type == IKImageBrowserCellForegroundLayer){
        //no foreground layer on place holders
        if([self cellState] != IKImageStateReady)
            return nil;

        //create a foreground layer that will contain several childs layer
        CALayer *layer = [CALayer layer];
        layer.frame = CGRectMake(0, 0, frame.size.width, frame.size.height);


        //add a checkbox to tell whether to upload this one or not
        NSRect checkFrame  = NSMakeRect( ( frame.size.width/2)-5 , frame.size.height - 19, 18,18);
        NSButton *uploadCheckBox = [[NSButton alloc] initWithFrame:checkFrame];
        [uploadCheckBox setButtonType:NSSwitchButton];
        [layer addSublayer :[uploadCheckBox layer]];

        return layer;
    }
    //(...)
    return nil;
}
但不幸的是,该按钮没有出现在图层上。我认为按钮的位置很好,因为它基于苹果应用程序的示例代码。我觉得这句话不对:
图层添加子图层:[上传复选框图层]];,因为我应该添加整个NSButton,而不仅仅是它的位图表示层。非常感谢您的帮助

不能在CALayer中添加NSView。你应该为你的按钮创建一个新图层,并添加到保留图层。

将按钮图层添加到另一个图层将不起作用,因为事件处理发生在NSView级别。是的,但即使按钮的图像也不会出现,当然更不用说任何处理了