0

我们想要 Lyft 按钮触摸事件,因为我从事分析工作,所以,我需要有多少人选择 Lyft,但我不能放置UIView点击事件。我尝试下面的代码。

let gesture = UITapGestureRecognizer(target: self, action: #selector(self.checkAction))
cell.lyftButton.addGestureRecognizer(gesture)

我怎样才能做到这一点?

4

2 回答 2

0

要检索 LyftButton,您需要在 Lyft 视图中获取按钮,在检索到它之后,我尝试向其中添加另一个目标,即您的“checkAction”方法,但由于某种原因它没有被调用。一种解决方法是:

  • 在 Auto Layout 上,在 Lyft Button View 顶部创建了一个透明按钮,我们将其称为“Transparent Lyft Button”:示例(我已嵌入另一个视图,因为它位于 stackView 上);
  • 在代码中,使用上述方法检索按钮,将其保存在变量中,我们称其为“requestLyftButton”并禁用它。
  • 为“透明 Lyft Button”创建了一个 IBAction,该 IBAction 触发了您创建的方法“self.checkAction”,并调用了 requestLyftButton.sendActions(for: .touchUpInside),该方法触发了原始 Lyft SDK 操作。

要检索 Lyft UIButton:

@IBOutlet weak var lyftButton: LyftButton!
@IBOutlet weak var transparentLyftButton: UIButton!
var requestLyftButton: UIButton?

func retrieveLyftButton(in view: UIView) {
    for view in view.subviews {
        if let lyftBtn = view as? UIButton {
            lyftBtn.isEnabled = false
            requestLyftButton = lyftBtn
        } else {
            retrieveLyftBtn(in: view)
        }
    }
}

transparentLyftButton IBAction 触发你的方法 + lyft sdk 原始动作:

@IBAction func requestLyft(_ sender: UIButton) {
    if let lyftBtn = requestLyftButton {
        checkAction() // Your method
        lyftBtn.sendActions(for: .touchUpInside)
    }
}

我希望您能理解所做的事情,如果您有任何问题,请告诉我。

于 2020-02-04T17:36:46.963 回答
0

您可以直接将选择器方法分配给 lyftButton,例如

lyftButton.addTarget(self, action: #selector(lyftButtonAction(_:)), for: .touchUpInside)

@objc
func lyftButtonAction(_sender: UIButton) {
//Do your action
}
于 2019-05-23T12:44:32.173 回答