gpt4 book ai didi

ios - 从重叠 View 触发 UITapGestureRecognizers

转载 作者:行者123 更新时间:2023-11-28 13:55:04 26 4
gpt4 key购买 nike

我有一个主视图和主视图的 4 个 subview ,它们都有自己的 UITapGestureRecognizer,当我点击一个 subview 时,如何触发两个 View 。下面的例子,

view hierarchy

如果我点击 subview 1 所需的日志将是:

subview1 is clicked
MainView is clicked

我的代码

override func viewDidLoad() {

super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

let mainGesture = UITapGestureRecognizer(target: self, action: #selector(mainGestureActivated))

self.view.addGestureRecognizer(mainGesture)

let subGesture = UITapGestureRecognizer(target: self, action: #selector(subViewGestureActivated))

self.subview1.addGestureRecognizer(subGesture)


}

@objc func mainGestureActivated(){
print("MainView Clicked")
}

@objc func subViewGestureActivated(){
print("Subview Clicked")
}

它只打印被点击的 subview !是否有可能同时触发两个 gestureRecognizers,因为 main 正在封装其他。

最佳答案

首先你应该在你的VC中符合UIGestureRecognizerDelegate,然后实现shouldRecognizeSimultaneouslyWith的委托(delegate)函数。在函数内部,你应该检测 gestureRecognizerotherGestureRecognizer 是否是你想要的,如果是,你应该让它们同时工作,

  • 符合委托(delegate),并在 viewDidLoad 之外声明手势识别器(因为稍后您需要在委托(delegate)方法中访问它们。)

    var mainGestureRecognizer = UITapGestureRecognizer()
    var subGestureRecognizer = UITapGestureRecognizer()

  • 初始化您的识别器,并将您的 VC 设置为它们的委托(delegate):

    mainGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(mainGestureActivated))
    subGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(subViewGestureActivated))
    mainGestureRecognizer.delegate = self
    subGestureRecognizer.delegate = self
  • 实现上面提到的delegate函数,实现subView和mainView的同时识别:

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    if gestureRecognizer == subGestureRecognizer && otherGestureRecognizer == mainGestureRecognizer {
    return true
    }

    return false
    }

如果您希望它适用于 4 个不同的 subview ,那么您应该检查委托(delegate)方法中的 else if 语句。

关于ios - 从重叠 View 触发 UITapGestureRecognizers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53987529/

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