【问题标题】:how to detect when user click lyft Button swift如何检测用户何时单击 lyft 按钮 swift
【发布时间】:2019-05-23 12:18:54
【问题描述】:

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

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

我怎样才能做到这一点?

【问题讨论】:

    标签: ios swift lyft-api


    【解决方案1】:

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

    lyftButton.addTarget(self, action: #selector(lyftButtonAction(_:)), for: .touchUpInside)
    
    @objc
    func lyftButtonAction(_sender: UIButton) {
    //Do your action
    }
    

    【讨论】:

    • 兄弟感谢您的回复,但 lyft 不是 UIButton 它是 UIView 控制器所以不能使用 addTarget github.com/lyft/Lyft-iOS-sdk#lyft-button
    • 点击视图时你的操作方法不会被调用吗?
    • LyftButton UIViewController 内部的某个地方有一个手势识别器或一个控件。您应该检查视图,弄清楚它是如何捕获点击的,然后将您的视图作为目标添加到该项目。
    【解决方案2】:

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

    • 在 Auto Layout 上,在 Lyft 按钮视图顶部创建了一个透明按钮,我们将其称为“透明 Lyft 按钮”:Example(我已嵌入到另一个视图中,因为它位于 stackView 上);
    • 在代码中,使用上述方法检索按钮,将其保存在变量中,我们称其为“requestLyftButton”并禁用它。
    • 为“透明 Lyft Button”创建了一个 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)
        }
    }
    

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

    【讨论】:

      猜你喜欢
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多