- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
下面是我用来通过 -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
没有响应触摸事件。我怎样才能解决这个问题,让它做出响应?
最佳答案
你不能。您必须将按钮添加为 subview 。
UIKit 触摸事件转发是 UIResponder 的一个特性,而 CALayers 不继承自 UIResponder,所以除非你想从第一原则实现触摸处理,否则这不是要走的路。
要将渐变图层转换为 View ,有两种选择:
1) 创建一个新的 UIView 子类并覆盖其 +(Class)layerClass
方法以返回 CAGradientLayer。
2) 创建一个常规的 UIView 并将您的 CAGradientLayer 添加为子层,然后将您的按钮添加为 View 的 subview ,而不是直接将其添加到 CAGradientLayer。
关于ios - 如何通过 -addSublayer : respond to touch events? 添加 UI 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8110543/
我正在尝试向我的 View 添加渐变,并将以下内容添加到 drawRect: CAGradientLayer *g = [[CAGradientLayer alloc]init]; g.frame =
我无法将 CAlayer 中的图像显示在 imageView 中。我可以让它与 CAGradientLayer 一起工作,但是当我将它更改为带有图像的 CALayer 时,似乎没有任何效果。如果框架被
我认为当我像这样添加一个 View 作为 subview 时: UIView* view = [[UIView alloc] init]; [self addSubview:view]; [view
我正在学习有关 Core Animation 书籍的教程,并尝试执行以下操作。 @interface ViewController () @property (nonatomic, weak) IBO
我写这段代码: let myAttributes = [ NSAttributedStringKey.font: UIFont(name: "Avenir-HeavyOblique", siz
如何在同一个 UIView 中正确使用这两个? 我有一个自定义子类 CALayer,我在其中绘制了 drawInContext 中的图案 我有另一个,我在其中设置了一个覆盖 PNG 图像作为内容。 我
问题 如何为您的图层创建单独的上下文并将该上下文合并到 super 图层中? 为什么我要这样做 我想将 View 层的绘制抽象为单独的对象/文件。我想用图层构建一个 View ,然后将其放置在另一个
当我按照以下方式编写代码时.. - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentConte
当我绘制图形并将其添加到 Controller 的 View 时,图形显示正确。 CAShapeLayer *shapeLayer = [CAShapeLayer layer]; self.curre
我正在为 CAGradient 设置动画 let gradientChangeAnimation = CABasicAnimation(keyPath: "colors") gradientC
下面是我用来通过 -addSublayer 将 UIButton 添加到层的代码: CAGradientLayer * tile = [[tile alloc] init]; UIButto
我是一名优秀的程序员,十分优秀!