首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在这些按钮上添加长和轻拍手势?

如何在这些按钮上添加长和轻拍手势?
EN

Stack Overflow用户
提问于 2016-01-09 07:05:17
回答 2查看 1.2K关注 0票数 0

我有一个有6个按钮的屏幕。所有按钮都连接到一个IBAction上。它们被标记,我使用一个开关语句来确定哪个是被点击的。

我怎样才能在每个按钮上添加一个长的和轻拍的手势?例如,当我点击按钮1,它知道是长手势还是轻拍手势?

所以,如果我点击按钮会做一些不同的事情,那么当我长时间按下。

谢谢。

代码语言:javascript
复制
@IBAction func playPauseAudioButton(sender: UIButton) {

    switch sender.tag {

    case 1:
        //Tap Gesture 
        //Long Gesture
        //I need this for every button
        print("1")

    case 2:
        print("2")

    case 3:
        print("3")

    case 4:

    case 5:
        print("5")

    case 6:
        print("6")

    default:
        print("Default")
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-09 07:21:24

像这样做

代码语言:javascript
复制
@IBAction func playPauseAudioButton(sender: AnyObject) {
    let tapGesture = UITapGestureRecognizer(target: self, action: "normalTap:")
    let longGesture = UILongPressGestureRecognizer(target: self, action: "longTap:")
    tapGesture.numberOfTapsRequired = 1
    sender.addGestureRecognizer(tapGesture)
    sender.addGestureRecognizer(longGesture)
}

func normalTap(sender : UIGestureRecognizer) {
    let recognizer: UIGestureRecognizer = sender
    let tag: Int = recognizer.view!.tag

    switch tag {
    case 1:
        // Do some action for button 1
        print("1")
    case 2:
        print("2")
    case 3:
        print("3")
    case 4:
        print("4")
    case 5:
        print("5")
    case 6:
        print("6")
    default:
        print("Default")
    }
}

func longTap(sender : UIGestureRecognizer) {
    let recognizer: UIGestureRecognizer = sender
    let tag: Int = recognizer.view!.tag

    if sender.state == .Ended {
        print("UIGestureRecognizerStateEnded")
        //Do Whatever You want on End of Gesture
    }
    else if sender.state == .Began {
        print("UIGestureRecognizerStateBegan.")
        //Do Whatever You want on Began of Gesture
    }

    switch tag {
    case 1:
        // Do some action for button 1
        print("1")
    case 2:
        print("2")
    case 3:
        print("3")
    case 4:
        print("4")
    case 5:
        print("5")
    case 6:
        print("6")
    default:
        print("Default")
    }
}
票数 5
EN

Stack Overflow用户

发布于 2016-01-09 07:28:03

定义两个IBActions,并为每个手势识别器设置一个手势识别器。这样,您就可以对每个手势执行两个不同的操作。

您可以在接口生成器中将每个手势识别器设置为不同的IBActions。

代码语言:javascript
复制
@IBAction func tapped(sender: UITapGestureRecognizer)
{
println("tapped")
//Your animation code.
}

@IBAction func longPressed(sender: UILongPressGestureRecognizer)
{
println("longpressed")
//Different code
}

通过没有接口生成器的代码

代码语言:javascript
复制
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapped:")
self.view.addGestureRecognizer(tapGestureRecognizer)

let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "longPressed:")
self.view.addGestureRecognizer(longPressRecognizer)

func tapped(sender: UITapGestureRecognizer)
{
 println("tapped")
}

func longPressed(sender: UILongPressGestureRecognizer)
{
println("longpressed")
}

希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34690728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档