Tap and Hold Button



🏋🏻 テーマ

  • 첫 번째 개인 프로젝트
  • Tap、Hold Button、Counterを実現…!
  • 🧑🏻‍🏭 内容


    UILongPressGestureRecognizerを使用して、
  • Hold Buttonを実現します.
  • Gestureを起動すると、特定の間隔ごとにCounter関数が呼び出されるTimerが回転します.
  • 動作完了後にTimerを停止します.
  • 🏃🏻 コード#コード#


    1.Gesture宣言

        var timer : Timer?
        
        override func viewDidLoad() {
            super.viewDidLoad()
            cntText.text = "-"
            
            // hold
            let press = UILongPressGestureRecognizer()
            press.addTarget(self, action: #selector(self.pressed(_:)))
            holdButton.addGestureRecognizer(press)
        }
  • addTarget
  • self:現在のViewControllerを表します.
  • #セレクタ:認識時に呼び出される関数を指定
  • addGestureReceinter(機能):Click Listenerと同じ概念.
  • 2.Calback関数

        @objc func pressed(_ gesture : UILongPressGestureRecognizer?){
            guard let ges = gesture else { return }
            
            switch ges.state{
            case .began:
                timer?.invalidate()
                timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(hold), userInfo: nil, repeats: true)
            case .ended, .cancelled:
                timer?.invalidate() //timer stop
            default:
                break
            }
        }
  • callback関数はObject-C形式で実現されるべきである.
  • Gestureが起動すると、.began箱に入り、timerを実行します.
  • 00.1秒というInterval Loholdという関数を実行します.
  • 断指またはGestureがキャンセルされた場合、何もしないのでtimerを閉じます.
  • 🔥 結果

  • の基本的なTap実装は簡単ですが、Holdを実装する際に方法が分からず、Google検索で見つけました.
  • は基本的なGesture認識とTimerを学ぶ機会となっている.