首页 > 解决方案 > 在未声明的多个图像视图上使用 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)




}
}

标签: swiftappenduitapgesturerecognizerfuncundeclared-identifier

解决方案


您需要启用用户交互

for view in self.arrTextFields {
    view.isUserInteractionEnabled = true
    view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(viewClicked)))
} 

@objc func viewClicked(_ recognizer: UITapGestureRecognizer) {
   print("tap")
}

推荐阅读