UITapGestureRecognizer работает с UIImageView, но не на UILabel

У меня есть класс UITableViewCell именем CommentsTableViewCell который, среди прочего, включает UIImageView и UILabel .

Код, который я использую:

 let tapGesture = UITapGestureRecognizer(target: self, action: #selector(CommentsTableViewCell.showUserViewController)) nameLabel.userInteractionEnabled = true avatarRoundImageView.userInteractionEnabled = true nameLabel.addGestureRecognizer(tapGesture) avatarRoundImageView.addGestureRecognizer(tapGesture) 

Как вы можете понять, у меня есть функция, которая показывает другой UIViewController всякий раз, когда UIImageView или UILabel прослушиваются.

Меня шокирует то, что tapGesture работает правильно в UIImageView но не на UILabel .

Есть идеи?

Вам нужен другой жест для всех элементов управления

 let tapGesture = UITapGestureRecognizer(target: self, action: #selector(CommentsTableViewCell.showUserViewController)) avatarRoundImageView.userInteractionEnabled = true avatarRoundImageView.addGestureRecognizer(tapGesture) let tapGesture2 = UITapGestureRecognizer(target: self, action: #selector(CommentsTableViewCell.showUserViewController)) nameLabel.userInteractionEnabled = true nameLabel.addGestureRecognizer(tapGesture2) 

Вам нужно создать два объекта UITapGestureRecognizer потому что UITapGestureRecognizer работает с одним элементом элемента UI . Поэтому создайте второй TapGestureRecognizer и назначьте его UILabel а другой – UIImageView .

Из документации UIGestureRecognizer .

Признак распознавателя жестов действует на касания, проверенные на конкретное представление и все подпункты этого представления. Таким образом, это должно быть связано с этой точкой зрения. Чтобы создать эту связь, вы должны вызвать метод addGestureRecognizer(_:) . Устройство распознавания жестов не участвует в цепочке ответчиков представления.

Interesting Posts
Давайте будем гением компьютера.