UILongPressGestureRecognizer 和 UITapGestureRecognizer

Posted

技术标签:

【中文标题】UILongPressGestureRecognizer 和 UITapGestureRecognizer【英文标题】:UILongPressGestureRecognizer and UITapGestureRecognizer 【发布时间】:2017-06-16 09:07:22 【问题描述】:

我对 Swift 很陌生,我对区分按钮的这两种手势的潜力着迷。

我正在 xCode 中编写我的第一个应用程序,我即将得出结论。作为最后一步,我想根据长按或点击为按钮实现两种不同的操作。

我按如下方式构建了应用程序。我有几个按钮连接到一个 IBAction 并使用标签区分它们。

来到需要长按操作的两个按钮之一的标签,我不知道如何继续。

你有什么建议吗? 非常感谢

func longTap() 
            if (resultDisplay.text != "")
                storedVariableA = String(result)
                eraseAll()
            
        
        else if (sender.tag == 20) 
                    let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(self.longTap(_:)))
                    longPressGesture.minimumPressDuration = 2 
                    sender.addGestureRecognizer(longPressGesture)



                

【问题讨论】:

你尝试了什么? 我尝试了以下方法。通过按下按钮(通过 if else 构造),我检查了按钮的标签。在相应的 if else 语句中,我试图区分这两种情况,但没有成功。 func longTap() 必须在else if 语句之外声明,而不是在if.. else 内部,它将在@IBAction 方法之外 感谢您的评论。我实际上在整个@IBAction 之外编写了该函数。很抱歉写错了。但它无论如何都不起作用 【参考方案1】:

您可以在您的@IBAction 中检查您在情节提要中或以编程方式提供的标签,请检查以下代码。

@IBAction func action(_ sender: UIButton) 

    if sender.tag == 22  // check for your desired tag instead of "22"
        // add longpress gesture. on sender // sender represents your button.
        let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(self.handleLongPressGesture(_:)))
        longPressGesture.minimumPressDuration = 2 // mention minimum press duration you want user to press.
        sender.addGestureRecognizer(longPressGesture)
     else 

    

【讨论】:

非常感谢您的回答。它似乎不起作用..我向您展示我在问题中写的内容 你想要的输出是什么?你想达到什么目标? 如果我长按这个按钮我想存储一些东西,而如果我只是点击它我想调用存储的数据。 你能帮帮我吗? @sky90 当然可以,有什么可以帮助您的吗?

以上是关于UILongPressGestureRecognizer 和 UITapGestureRecognizer的主要内容,如果未能解决你的问题,请参考以下文章