CALayer / UIView падает, когда я касаюсь UIVIew - PullRequest
2 голосов
/ 30 мая 2011

Я использую пользовательский слой для рисования на моем UIView.И чтобы сделать недействительным и обновить слой, мне нужно настроить мой вид на делегирование моего CALayer.Когда это сделано, он рисует мой текст правильно , но , когда вид получает касания, приложение вылетает.Что я делаю неправильно?

- (void) layoutSubView {
    if (drawLayer == nil) {
        drawLayer = [[CALayer alloc] init];
        [drawLayer setDelegate:self];
        [[self layer] addSublayer:drawLayer];
    }
    [drawLayer setFrame:[self bounds]]; 
    [drawLayer setNeedsDisplay];
}

Выше мой код для настройки CALayer, а ниже переопределенный метод drawLayer.

- (void) drawLayer:(CALayer *)layer 
     inContext:(CGContextRef)ctx {

        if (layer == drawLayer) {
        UIGraphicsPushContext(ctx);
        [self drawTitle:ctx];
        UIGraphicsPopContext();
    }
}

Вот стек.

enter image description here

1 Ответ

5 голосов
/ 30 мая 2011

Вы не можете использовать объект UIView, чтобы быть делегатом уровня, отличного от его собственного уровня. Заявлено here. Вам нужно будет назначить некоторый другой объект в качестве его делегата.

...