LoginSignup
4
2

More than 5 years have passed since last update.

【swift】連続タップで反応するUIButtonの作り方

Last updated at Posted at 2019-01-19

背景

あるB2Bアプリを作成中に、アプリユーザの方(企業側)がお客様にアプリを操作してもらう際に、お客様が勝手にアプリをログアウトしないように、ログアウトボタンを隠しボタンかつ3回連続タップで反応するようにしてほしいとの依頼を受け、作成しました。3回連続タップなので、タップとタップに間が空いてしまった場合は、再度3回連続でタップしないといけないようにしています。Timerを使用しました。

ソースコード

ViewController.swift
import UIKit

class TopViewController: UIViewController {

    var logoutTapCount = 0  // ボタンをタップした回数をカウント
    var countResetTimer: Timer!  // ボタンタップから次のボタンタップまでの時間を測る

    override func viewDidLoad() {
        super.viewDidLoad()
     }


    /// 隠しログアウトボタンタップ時 
    /// 隠ボタンなので、storyboard上でbackground colorをclearにしています
    /// - Parameter sender: 隠しログアウトボタン
    @IBAction func tapLogoutButton(_ sender: Any) {
        logoutTapCount += 1 // ボタンを押すとカウントをあげる
        if logoutTapCount == 3 { // カウントが3のときログアウトできる
        logout() // ログアウトするための関数。今回は記載していません。           
        }

    // ボタンを押した後にタップとタップに5秒以上空いた際にタップカウントをリセットする
        countResetTimer = Timer.scheduledTimer(
            timeInterval: 5,
            target: self,
            selector: #selector(self.countReset),
            userInfo: nil,
            repeats: true)
    }

    func countReset() {
        logoutTapCount = 0
    }   
}

最後に

Timer関数便利ですね。こちらでポーリング機能を作成したりもしています。
連続タップのUIButtonを作成するいい方法があればご教示いただけると嬉しいです。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2