我们如何将 UITapGestureRecognizer 分配给另一个视图?
Posted
技术标签:
【中文标题】我们如何将 UITapGestureRecognizer 分配给另一个视图?【英文标题】:How can we assign UITapGestureRecognizer to another view? 【发布时间】:2020-05-19 21:53:34 【问题描述】:我用这个库来展示;
https://github.com/scihant/ctshowcase 在展示展示时,它会发送一个视图并将其扔到 targetView 中。 我想将已添加到我发送的视图中的 GestureRecognizer 添加到 targetView。我怎样才能做到这一点?我试过这样的东西;
public func setup(for view: UIView, offset: CGPoint, margin: CGFloat)
guard willShow == true else return
targetView = view
targetOffset = offset
targetMargin = margin
guard let targetView = targetView else return
if let recognizer = view.gestureRecognizers?.first as? UITapGestureRecognizer
targetView.isUserInteractionEnabled = true
targetView.addGestureRecognizer(recognizer)
...
但它不起作用。我在技术上犯了错误吗?这不可能吗?
func creatFabButton()
fabButton = KCFloatingActionButton()
fabButton.buttonColor = Util.getColor(Colors.red1)
fabButton.plusColor = UIColor.white
let tap = UITapGestureRecognizer(target: self, action: #selector(fabPresed(_:)))
fabButton.addGestureRecognizer(tap)
view.addSubview(fabButton)
@objc func fabPresed(_ sender: UITapGestureRecognizer? = nil)
let viewController = NewClientViewController.newViewController(nil)
self.present(viewController, animated: true, completion: nil)
override func viewDidLoad()
super.viewDidLoad()
creatFabButton()
【问题讨论】:
在哪里将目标添加到 tapReognizer ? 在 UIView 的(视图)ViewController @jawadAli 中 也显示该代码 func creatFabButton() fabButton = KCFloatingActionButton() fabButton.buttonColor = Util.getColor(Colors.red1) fabButton.plusColor = UIColor.white let tap = UITapGestureRecognizer(target: self, action: #selector (fabPresed(:))) fabButton.addGestureRecognizer(tap) view.addSubview(fabButton) @objc func fabPresed( sender: UITapGestureRecognizer? = nil) let viewController = NewClientViewController.newViewController(nil) self .present(viewController, 动画: true, 完成: nil) 如果让识别器 = view.gestureRecognizers? .first as? uıtapgesturerecogniz 是 .. 这里的识别器没有来 nil 满了但是当我说 addGestureRecognizer 它没有做我想要的@jawadAli 【参考方案1】:手势识别器不可重复使用。它们被设计为仅附加到一个视图。解决方案是为每个视图创建一个专用的手势识别器。
另请参阅此帖子:ios7: UITapGestureRecognizer reuse issue
【讨论】:
专用手势识别器是什么意思?我是否需要从一开始就为视图定义手势识别器? 这意味着您必须为每个视图创建一个单独的手势识别器实例。看看我上面粘贴的链接。以上是关于我们如何将 UITapGestureRecognizer 分配给另一个视图?的主要内容,如果未能解决你的问题,请参考以下文章