Swift: addGestureRecognizer не работает для детей стека - PullRequest
0 голосов
/ 29 мая 2018

Коды:

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"

Я хочу, если я нажму на просмотр, получу идентификатор или другое значение представления

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Если вы создаете UIStackView в построителе интерфейса, свойство isUserInteractionEnabled по умолчанию имеет значение false.Это означает, что представление и все его дочерние представления не будут реагировать на взаимодействие с пользователем.

Когда вы создаете представление в коде, это свойство имеет значение true по умолчанию.

Добавить:

stackView.isUserInteractionEnabled = true

Вы должны добавить это только один раз, например, в viewDidLoad.

0 голосов
/ 29 мая 2018

Причина, по которой это не работает, возможно, неверная сигнатура метода.Правильная подпись для действий распознавателя такова:

recognizerAction(_ recognizer: UIGestureRecognizer)
...