Как добавить NSButton в IKImageBrowserView - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь настроить IKImageBrowserView для отображения изображений с помощью кнопки на каждом элементе (см. Прилагаемое изображение).Когда пользователь нажимает на кнопку (большой палец вверх), я отмечаю ее как избранную. ImageBrowser с фотографиями

В настоящее время я добился только показа изображения (большой палец вверх) вместо кнопки на каждом элементе.Тем не менее, это не кликабельно, потому что я добавил его в CALayer (я читал, что CALayer не отвечает на события), со следующим кодом:

- (CALayer *)layerForType:(NSString*) type
{
    NSRect frame = [self frame];

    // 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);

        NSRect imageContainerFrame = [self imageContainerFrame];
        NSRect relativeImageContainerFrame =
        NSMakeRect(imageContainerFrame.origin.x - frame.origin.x,
               imageContainerFrame.origin.y - frame.origin.y,
               imageContainerFrame.size.width,
               imageContainerFrame.size.height);

        CALayer *likeDisableLayer = [CALayer layer];
        setBundleImageOnLayer(likeDisableLayer, CFSTR("LikeIcon_disable.png"));
        likeDisableLayer.frame = CGRectMake((frame.size.width/2)-5, frame.size.height - 25, 24, 30);
        [layer addSublayer:likeDisableLayer];

        return layer;
    }
    return nil;
}

Есть несколько потоков с одинаковым вопросом ( this не удается добавить кнопку в слой, это не имеет правильного ответа, это относится к iOS и использует UITapGestureRecognizer в качестве обходного пути), но ни один из нихявляются полными или точными.

Буду признателен за любую помощь, оказанную для достижения моей цели, или за какой-нибудь другой совет, как туда добраться.

Спасибо

...