Skip to content

Instantly share code, notes, and snippets.

@KentarouKanno
Last active May 24, 2023 08:34
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KentarouKanno/15b14eddb8fa61b630594e661eeda44d to your computer and use it in GitHub Desktop.
Save KentarouKanno/15b14eddb8fa61b630594e661eeda44d to your computer and use it in GitHub Desktop.

UIButton + UILongPressGestureRecognizer

swift4

  • 通常のボタンタップとロングプレスを判定する
import UIKit

class ViewController: UIViewController {
    
    @IBOutlet weak var button: UIButton!
    @IBOutlet weak var label: UILabel!
    var timer: Timer?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        label.text = "0"
        
        let longPress = UILongPressGestureRecognizer(target: self, action: #selector(self.longPress(gesture:)))
        longPress.minimumPressDuration = 1
        button.addGestureRecognizer(longPress)
    }
    
    @objc func longPress(gesture: UILongPressGestureRecognizer) {
        
        if gesture.state == .began {
            print("Long Press")
            timer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true) { (_) in
                guard let _ = self.timer,
                    let text = self.label.text,
                    let count = Int(text) else { return }
                self.label.text = String(count + 10)
            }
        }
        
        if gesture.state == .ended {
            timer?.invalidate()
        }
    }
    
    @IBAction func normalButtonTap(sender: UIButton) {
        print("Button tapped")
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment