【问题标题】:Swift 4.2, UITapGestureRecognizer not working in scrollviewSwift 4.2,UITapGestureRecognizer 在滚动视图中不起作用
【发布时间】:2018-10-16 22:19:30
【问题描述】:

由于某种原因,UITapGestureRecognizer 在我的滚动视图中没有被触发。我尝试了很多解决方案,但都无济于事。

滚动视图:

let scrollView: UIScrollView = {

    let scroll = UIScrollView()

    scroll.translatesAutoresizingMaskIntoConstraints = false
    scroll.showsHorizontalScrollIndicator = false
    scroll.showsVerticalScrollIndicator = false

    return scroll
}()

包含滚动视图中所有视图的视图(因此“视图”位于此视图中,而不是直接位于滚动视图中):

let contentView: UIView = {

    let view = UIView()

    view.translatesAutoresizingMaskIntoConstraints = false

    return view
}()

手势识别器:

let gesture = UITapGestureRecognizer(target: self, action:  #selector(self.viewTap))
            gesture.cancelsTouchesInView = false
            gesture.numberOfTapsRequired = 1
            view.addGestureRecognizer(gesture)

行动:

@objc func viewTap(sender : UITapGestureRecognizer) {
     // do stuff
}

查看层次结构 (https://imgur.com/a/wr3tge4):

[scrollView]
   [contentView]
      [view] <- UITapGestureRecognizer here

提前致谢!

【问题讨论】:

  • 不应该view.addGestureRecognizer(gesture) 必须是contentView.addGestureRecognizer(gesture) 吗?
  • 不,我想将手势识别器放在 contentView 中的“视图”上。 (抱歉造成混淆)
  • 您需要显示您的视图层次结构,因为它确实会混淆您拥有什么以及您想要做什么
  • 还在 viewTap(_) 中添加断点并尝试在您的视图所在的确切位置点击。此外,您可以在运行时打开 UIView 层次结构以检查您的视图是否真的在屏幕上 - 它可能是零高度或 smth..
  • 您还可以为视图背景添加一些颜色,以确保您首先看到它。然后在运行时打开 UI 层次结构以检查它是否没有被任何东西阻塞

标签: ios swift uiscrollview uitapgesturerecognizer


【解决方案1】:

将视图的颜色(通过手势)更改为红色或黄色等突出的颜色。运行您的应用程序,首先检查您是否看到您的视图,然后使用“查看 UI 层次结构”功能来查看您的视图是否实际上没有被任何东西阻挡

【讨论】:

  • 我检查过了,我觉得它没有被遮挡(imgur.com/a/wr3tge4(带有手势的视图位于底部(蓝绿色)))
  • 你能从这个工具中转储它看起来像的视图吗?
猜你喜欢
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
相关资源
最近更新 更多