我们如何将 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 分配给另一个视图?的主要内容,如果未能解决你的问题,请参考以下文章

我们如何将 OCP 与委托一起使用?

如何将文字变成声音,然后录制成音频?

我们如何将 DataFrame 转换为 Bunch 数据类型? [关闭]

我们如何将文本与 PayPal 字段变量连接起来?

我们如何将日期字段绑定到具有 2 列的“值列表”组合框?

我们如何将完整的网页数据下载到电子表格