gpt4 book ai didi

ios - 使用 UITapGestureRecognizer 防止按钮在 View 后面时触发

转载 作者:行者123 更新时间:2023-12-01 21:59:06 26 4
gpt4 key购买 nike

我有以下设置:

enter image description here

  • zPosition = 0
  • 处的蓝色背景
  • zPosition = 0 处的黄色按钮,带有打印“Button tapped”
  • 的操作
  • UIView 具有灰色背景和 0.8 alpha 在 zPosition = 1 与 UITapGestureRecognizer 与打印“灰色 View 轻敲”的 Action

  • 当我点击灰色区域时,会打印“已点击的灰色 View ”。
    但是,如果我点击黄色按钮的位置,则会打印“Button tapped”。
    我希望始终打印“已点击灰色 View ”,因为该 View 位于按钮前面。
    如何防止触发 View 后面的按钮?

    我知道我可以将按钮设置为 .isEnabled = false 但这不是一个合适的解决方案,因为灰色背景是在父 View Controller 中创建的,而我的所有 View 都在继承。

    我将灰色 View 设置为 .isUserInteractionEnabled = true (即使它是默认值)如此处所述: In Stackoverflow

    我想用 Apple Documentation但问题是有一个按钮和一个手势识别器,而不是多个手势识别器。

    关于如何正确执行此操作的任何想法?

    最佳答案

    @Daljeet 引导我找到解决方案。使用 Debug View Hierarchy 我意识到我的按钮位于 View 的顶部。我的错误是因为我没有意识到 UIView.layer.zPosition 和层次结构中 subview 的顺序之间的区别。一个 View 可以绘制在另一个 View 的后面,但在 View 层次结构中仍然位于前面。

    解决方案是使用 view.bringSubviewToFront(greyView)
    请注意,如果您在调用最后一行代码后添加按钮,则该按钮将放置在 View Hierarchy 的顶部

    关于ios - 使用 UITapGestureRecognizer 防止按钮在 View 后面时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60652705/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com