Я переместил все свои элементы UIE в scrollView, чтобы избежать загруженного UIViewcontroller.Но теперь GestureRecognizer в представлении больше не работает.
Иерархия My View выглядит следующим образом:
- UIViewController (SingleEventController)
- UIScrollView (EventScrollView)
- UIView (contentView)
- UILabel, UIView, UITableView и т. Д.
Это похоже на распространенную проблему, потому что я нашел довольно много о Stackoverflow, например: Пример 1 Пример 2 .Тем не менее, я не смог решить мое дело ..
Упрощенный код в моем EventScrollView выглядит так:
let locationLabel: UILabel = {
let label = UILabel()
label.text = "Standort"
label.isUserInteractionEnabled = true //Important!
return label
}()
override init(frame: CGRect) {
super.init(frame: frame)
self.isUserInteractionEnabled = true //not needed!
contentView.isUserInteractionEnabled = true //Important!
}
func setupViews() {
guard let parent = parentVC else { return }
let locationTap = UITapGestureRecognizer(target: parent, action: #selector(parent.openInGoogleMaps))
locationTap.cancelsTouchesInView = false //Important!
addSubview(contentView)
contentView.addSubview(locationLabel)
locationLabel.addGestureRecognizer(locationTap)
}
Какой шаг я пропускаю?Кстати, щелчки по строке UITableView
внутри contentView также не регистрируются.