gpt4 book ai didi

swift - 当 TapGestureRecognizer 连接到容器 View 时,未检测到触摸按钮

转载 作者:行者123 更新时间:2023-11-30 10:49:07 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个 View Controller ,该 View 具有附加的点击手势识别器。

tapGesture 使隐藏 View (某种面板)变得可见。该 View 包含一个按钮,可以执行某些操作,然后隐藏面板。

但似乎由于点击手势附加到 View Controller 的 View ,因此未检测到按钮上的触摸,并且仅触发了 View Controller View 上的点击。

我尝试过使用firstResponder,但似乎不起作用

func addGesture(){
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(togglePanel))
myView.addGestureRecognizer(tapGesture)
}

我的面板是这样插入的:

 insertSubview(actionPanel, at: 0)

我的按钮

actionPanel.addSubview(dismissBtn)

按钮操作

dismissBtn.addTarget(self, action: #selector(hideActionPanel), for: .touchUpInside)

@objc func hideActionPanel(){
print("tapped")
}

最佳答案

您可以将 UIGestureRecognizerDelegate 添加到您的类中。要了解更多信息,请访问UIGestureRecognizerDelegate .

然后实现funcgestureRecognizer(UIGestureRecognizer, shouldReceive: UITouch) -> Bool。每次手势即将发生时都会调用此函数。如果您想确切地了解它是如何工作的,请访问这里 gestureRecognizer .

不要忘记像这样将你的手势连接到代理。

tapGesture.delegate = self

最后,在 UIGestureRecognizerDelegate 函数内部检查正在触摸的 View 是否等于具有gestureRecognizer 的 View 。这将阻止任何底层 View 识别该手势。

if touch.view ==gestureRecognizer.view {
返回真
}
返回错误

关于swift - 当 TapGestureRecognizer 连接到容器 View 时,未检测到触摸按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55038269/

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