菜鸟教程小白 发表于 2022-12-13 03:59:13

ios - 以编程方式将 UITapGestureRecognizer 添加到 Outlet 集合中的 UIViews


                                            <p><p>我正在处理存储在 socket 集合中的一系列 View 。</p>

<pre><code>@IBOutlet var theViews: !
</code></pre>

<p>在我的 viewDidLoad 函数中,我循环遍历 View 集合,在此期间我创建了一个 UITapGestureRecognizer 并将其添加到 View 中。</p>

<pre><code>for v in theViews {
    let tap = UITapGestureRecognizer(target: self, action: #selector(self.flipSingleView(sender:)))
    tap.delegate = self
    tap.numberOfTapsRequired = 1
    tap.numberOfTouchesRequired = 1
    v.addGestureRecognizer(tap)
    v.isUserInteractionEnabled = true
}
</code></pre>

<p>这里是选择器指向的函数:</p>

<pre><code>@objc func flipSingleView(sender: UITapGestureRecognizer) {
    print(&#34;tapped&#34;)
}
</code></pre>

<p>补充说明:</p>

<ul>
<li>为这些 View 启用了用户交互</li>
<li>永远无法到达 FlipSingleView 中的断点</li>
<li> ViewController 实现 UIGestureRecognizerDelegate(我查看了协议(protocol),没有看到在这种情况下有用的函数)</li>
<li>已验证所有有问题的 View 都与 socket 集合有 socket 连接</li>
<li>没有任何东西打印到控制台</li>
</ul></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你提到你的观点在一个导出集合中,所以我假设它看起来像这样:</p>

<pre><code>@IBOutlet var myViews: !
</code></pre>

<p>不确定您是否需要投入其中的所有东西。试试这个:</p>

<pre><code>// In viewDidLoad
myViews.forEach{ view in
let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(gesture:)))
tap.numberOfTapsRequired = 1
tap.delegate = self
view.addGestureRecognizer(tap)
}
</code></pre>

<p>对于您的处理程序:</p>

<pre><code>@objc func handleTap(gesture: UIGestureRecognizer) {
    print(&#34;tap&#34;)
}
</code></pre>

<p>最后,为委托(delegate)方法添加一个部分,即使它只是空的:</p>

<pre><code>extension ViewController: UIGestureRecognizerDelegate {
// TODO: Fill in as needed
}
</code></pre>

<p>要确定是哪个 View 发送的,您可以在 View 中添加标签。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 以编程方式将 UITapGestureRecognizer 添加到 Outlet 集合中的 UIViews,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/48727995/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/48727995/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 以编程方式将 UITapGestureRecognizer 添加到 Outlet 集合中的 UIViews