GestureRecognizer в scrollView не работает - PullRequest
0 голосов
/ 24 сентября 2018

Я переместил все свои элементы 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 также не регистрируются.

1 Ответ

0 голосов
/ 25 сентября 2018

Я обнаружил свою проблему в комментариях к этому ответу. ContentView внутри моего scrollView, в котором были все остальные виды, имел 0 высоту и т. Д. На него нельзя было нажать.Задав вид высоты, он работал:

contentView.heightAnchor.constraint(equalTo: self.frameLayoutGuide.heightAnchor, multiplier: 1).isActive = true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...