如果我使用 CALayer 绘制 UIButton 不会触发选择器

Posted

技术标签:

【中文标题】如果我使用 CALayer 绘制 UIButton 不会触发选择器【英文标题】:UIButton not firing selector if I draw it using CALayer 【发布时间】:2010-04-27 22:25:21 【问题描述】:

大家好,我这样创建这个按钮:

_myButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain];

    DLBadgeLayerDelegate *layerDelegate = [[DLBadgeLayerDelegate alloc] init];

    _myButton.frame = CGRectMake(0.0 , 0.0, 100.0, 100.0);
    [_myButton addTarget:self action:@selector(myButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
    _myButton.layer.backgroundColor = [[UIColor redColor] CGColor];

    _myButton.center = CGPointMake(10.0, 10.0);
    [self addSubview:_myButton];
    [_myButton release];

该按钮出现在屏幕上,但如果我点击它,则没有任何反应。如果我只是创建一个圆角矩形按钮,而不是在其图层上没有自定义绘图,或者如果我只是将图层代码行留在外面,那么一切都很好。你有什么想法为什么我会出现这种行为,因为我想在按钮的图层中进行一些自定义绘图?

【问题讨论】:

【参考方案1】:

事件不会发送到 (1) 隐藏、(2) alpha

编辑:尝试将背景颜色放在视图的背景颜色中,而不是图层的背景颜色中:

_myButton.backgroundColor = [UIColor redColor];

【讨论】:

【参考方案2】:

如果我不考虑这一行:

_myButton.layer.backgroundColor = [[UIColor redColor] CGColor];

事件被正确触发,我仍然没有标题、alpha 等。我不认为这是问题或解释,但我也会尝试这种方式。

【讨论】:

以上是关于如果我使用 CALayer 绘制 UIButton 不会触发选择器的主要内容,如果未能解决你的问题,请参考以下文章

CALayer 的 position和anchorPoint属性

CALayer 的 position和anchorPoint属性

使用 UIView 或 CALayer 绘制和动画?

CALayer 中的抗锯齿绘图

CALayer (CAAnimation) 动画属性绘制错误

如何在 CALayer 中绘制简单的位图文本?