ios - 如何通过 -addSublayer : respond to touch events? 添加 UI 元素
<p><p>以下是我用来通过 <code>-addSublayer</code> 将 UIButton 添加到层的代码:</p>
<pre><code>CAGradientLayer * tile = [ init];
UIButton *XImageButton = [init];
XImageButton.frame= CGRectMake(kXButtonlocX, kXButtonlocY, kXButtonHeight,kXButtonWidth );
;
[XImageButton addTarget:nil action:@selector(XbuttonTouchEvent)
forControlEvents:UIControlEventTouchUpInside];
;
</code></pre>
<p><code>XImageButton</code> 没有响应触摸事件。我该如何解决这个问题,以便它做出响应?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>你不能。您必须将按钮添加为 subview 。</p>
<p>UIKit 触摸事件转发是 UIResponder 的一项功能,CALayers 不继承自 UIResponder,所以除非你想从第一原理实现触摸处理,否则这不是可行的方法。</p>
<p>要将渐变层转换为 View ,有两种选择:</p>
<p>1) 创建一个新的 UIView 子类并重写它的 <code>+(Class)layerClass</code> 方法返回 CAGradientLayer。</p>
<p>2) 创建一个常规 UIView 并将您的 CAGradientLayer 添加为子层,然后将您的按钮添加为 View 的 subview ,而不是将其直接添加到 CAGradientLayer。</p></p>
<p style="font-size: 20px;">关于ios - 如何通过 -addSublayer : respond to touch events? 添加 UI 元素,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/8110543/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/8110543/
</a>
</p>
页:
[1]