菜鸟教程小白 发表于 2022-12-13 09:45:57

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]
查看完整版本: ios - 如何通过 -addSublayer : respond to touch events? 添加 UI 元素