当我触摸UIVIew时,CALayer/UIView崩溃了

Kon*_*d77 2 iphone xcode stack-trace calayer uiview

我使用自定义图层绘制我的UIView.为了使图层无效和更新,我需要将我的视图设置为我的代表CALayer.当这样做是正确吸取我的文字,但是当视图接收触摸应用程序崩溃.我做错了什么?

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

上面是我设置CALayer的代码,下面是重写的drawLayer方法.

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

        if (layer == drawLayer) {
        UIGraphicsPushContext(ctx);
        [self drawTitle:ctx];
        UIGraphicsPopContext();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是堆栈.

在此输入图像描述

Dee*_*olu 5

您不能将UIView对象用作其自身图层以外的图层的委托.它说明了here.您需要将其他一些对象指定为其委托.