Swift:addGestureRecognizer对stackview子节点不起作用

时间:2018-05-29 07:31:27

标签: swift uitapgesturerecognizer stackview

代码:

for ... {
   let view = CategoryClass.createMyClassView()
   view.myLabel.text = packTitle
   view.twoLabel.text = packText
   view.bgCaategory.layer.cornerRadius = 30

   i = i + 1
   if(i == 1){
      selectPackId = packId!;
      view.imgSelect.image = UIImage(named: "selected")
   } else {
      view.imgSelect.image = UIImage(named: "select")
   }

   view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSendData(sender:))))

   self.stackView.addArrangedSubview(view)
}

@objc func handleSendData(sender: UITapGestureRecognizer) {
   print("H 1")
}

如果我点击视图,则无需打印" H 1"

我希望如果我点击视图,获取id或其他视图值

2 个答案:

答案 0 :(得分:0)

它不起作用的原因可能是错误的方法签名。识别器操作的正确签名是:

recognizerAction(_ recognizer: UIGestureRecognizer)

答案 1 :(得分:0)

如果在界面构建器中创建UIStackView,则默认情况下isUserInteractionEnabled属性为false。这意味着视图及其所有子视图都不会响应用户交互。

在代码中创建视图时,此属性为true为默认值。

添加:

stackView.isUserInteractionEnabled = true

您只需在viewDidLoad中添加一次。