swift - 在未声明的多个图像视图上使用 Uitapgesture 识别器
问题描述
我的 swift 代码使用 func addBox 将图像视图添加和附加到 uiview 控制器。我想要做的就是在点击其中一个图像视图时激活 func viewClicked 。现在什么都没有发生,也没有任何东西被写入调试区域。
import UIKit
class ViewController: UIViewController {
var ht = -90
var ww = 80
var hw = 80
var arrTextFields = [UIImageView]()
var b7 = UIButton()
override func viewDidLoad() {
[b7].forEach {
$0.translatesAutoresizingMaskIntoConstraints = false
view.addSubview($0)
$0.backgroundColor = .systemOrange
}
b7.frame = CGRect(x: view.center.x-115, y: view.center.y + 200, width: 70, height: 40)
b7.addTarget(self, action: #selector(addBOx), for: .touchUpInside)
for view in self.arrTextFields {
view.isUserInteractionEnabled = true
view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(viewClicked)))
}
}
@objc func viewClicked(_ recognizer: UITapGestureRecognizer) {
print("tap")
}
//func that adds imageview.
@objc func addBOx() {
let subview = UIImageView()
subview.isUserInteractionEnabled = true
arrTextFields.append(subview)
view.addSubview(subview)
subview.frame = CGRect(x: view.bounds.midX - 0, y: view.bounds.midY + CGFloat(ht), width: CGFloat(ww), height: 35)
subview.backgroundColor = .purple
ht += 50
arrTextFields.append(subview)
}
}
解决方案
您需要启用用户交互
for view in self.arrTextFields {
view.isUserInteractionEnabled = true
view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(viewClicked)))
}
@objc func viewClicked(_ recognizer: UITapGestureRecognizer) {
print("tap")
}
推荐阅读
- react-native - react-navigation 访问 cardStyleInterpolator 中的导航状态
- firebase - Cloud Functions 中的 Firestore - 通过错误消息创建缺少的索引
- vbscript - 为什么当我使用 webbrowser.visible = true 时我的机器人不可见
- mediawiki - 本地域上的 LDAP 与 Debian 10 上的 Mediawiki
- sql - 如何在 SQL 中进行子查询
- python - 使用 FPDF 生成发票
- react-native-flexbox - 使用 React Native 覆盖样式表中的单个样式道具
- html - 如何在 div 中的图标下方获取我的文本
- angular - 升级到 .Net Core 3.1 后,Liveness/Readiness 探测失败
- c++ - 如何请求矢量
作为模板类型参数