【问题标题】:How to block UIGestureRecognizer's behind an overlay view?如何在覆盖视图后面阻止 UIGestureRecognizer?
【发布时间】:2018-03-30 19:40:04
【问题描述】:

我有一个复杂的视图层次结构,其中包含各种UIGestureRecognizer

然后我呈现一个覆盖层UIView,如果用户与这个覆盖层交互,我确实希望任何放置在该覆盖层下方的手势识别器触发。目前,例如,拖动会导致手势识别器在覆盖视图下方触发。

我想避免任何导致潜在意大利面条代码的解决方案(例如,遍历视图层次结构和禁用手势识别器)。

类似问题:

【问题讨论】:

  • 显而易见的问题:您尝试了什么?请搜索,我几乎可以肯定这已经在这里讨论/回答过多次了。
  • @meaning-matters 令人惊讶的是,对于这个问题,我找不到任何相当干净的答案。至于我尝试过的,可能不受欢迎,但我故意将其排除在外,以免对答案产生偏见;由于您的要求,我在下面发布了一个可能的答案,以免污染问题空间(再次,可能不受欢迎,对不起!)。我只是想看看其他人有什么创造性的答案,因为我在其他地方找不到任何明确的答案。

标签: ios cocoa-touch uigesturerecognizer


【解决方案1】:

我能想到的唯一一种干净的解决方案是在覆盖视图上添加所有类型的手势识别器,这样它们就会被触发而不是下面的那些。

例如:

overlayView.addGestureRecognizer(UIPanGestureRecognizer(target: nil, action: nil))
overlayView.addGestureRecognizer(UILongPressGestureRecognizer(target: nil, action: nil))
overlayView.addGestureRecognizer(UISwipeGestureRecognizer(target: nil, action: nil))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 2022-07-09
    相关资源
    最近更新 更多