以下是我用来通过-addSublayer
将UIButton添加到图层的代码:
CAGradientLayer * tile = [[tile alloc] init];
UIButton *XImageButton = [[UIButton alloc]init];
XImageButton.frame= CGRectMake(kXButtonlocX, kXButtonlocY, kXButtonHeight,kXButtonWidth );
[XImageButton setTitle:@"xbutton" forState:UIControlStateNormal];
[XImageButton addTarget:nil action:@selector(XbuttonTouchEvent)
forControlEvents:UIControlEventTouchUpInside];
[tile addSublayer:XImageButton.layer];
XImageButton
没有响应触摸事件。我该如何解决这个问题以便它做出响应呢?
答案 0 :(得分:3)
你做不到。您必须将该按钮添加为子视图。
UIKit触摸事件转发是UIResponder的一项功能,CALayers不会从UIResponder继承,所以除非您想从第一原则实施触摸处理,否则这不是可行的方法。
要将渐变图层转换为视图,有两个选项:
1)创建一个新的UIView子类并覆盖其+(Class)layerClass
方法以返回CAGradientLayer。
2)创建一个常规UIView并将您的CAGradientLayer添加为子图层,然后将您的按钮添加为视图的子视图,而不是直接将其添加到CAGradientLayer。