[Xcode][Swift]ボタンなどの同時タップを禁止する

公開日: : 最終更新日:2017/08/27 iPhone

こんにちは、@akio0911です。

iOSで、ボタンなどの同時タップを禁止する方法を紹介します。

ボタンを同時タップできてしまうことを確認する

まずは、ボタンを同時タップできてしまうことを確認しましょう。

class ViewController: UIViewController {
    @IBOutlet weak var button1: UIButton!
    @IBOutlet weak var button2: UIButton!
    @IBOutlet weak var button3: UIButton!

    @IBAction func tapButton1(_ sender: Any) {
        print(#function)
    }

    @IBAction func tapButton2(_ sender: Any) {
        print(#function)
    }

    @IBAction func tapButton3(_ sender: Any) {
        print(#function)
    }
}

上記のようなコードを書くと、button1をタップしながらbutton2をタップするなどの操作が可能なことが確認できます。

UIViewのisExclusiveTouchプロパティで同時タップを禁止する

次に、先ほどのコードに以下のようなviewDidLoadメソッドを追加してみましょう。

    override func viewDidLoad() {
        super.viewDidLoad()
        button1.isExclusiveTouch = true
    }

こうすることで、以下のような操作を行えなくなります。

  • button1をタップしながらbutton2やbutton3をタップする
  • button2やbutton3をタップしながら、button1をタップする

@akio0911はこう思った。


同時タップを禁止していないと、例えばタップすると他の画面へと遷移するボタンを2つ配置し、両方タップした状態で同時に離すと、2つの画面への遷移が同時に起こってしまったりします。

同時にタップされると困る箇所にはisExclusiveTouchをきちんと設定しておくと良いと思います。

この記事を書いた人
あきお(@akio0911
iOSエンジニア、ブロガー。「プログラミングで人々を幸せに」をテーマに活動中。著書に「iPhoneアプリ開発レシピ」「cocos2d for iPhoneレッスンノート」など。東京・大阪にてアプリ開発講座「アプリクリエイター道場」を主催。 MAMORIO株式会社 技術顧問(インタビュー記事)、VISITS Technologies株式会社 技術顧問(インタビュー記事)。ブログ「卵は世界である」を運営。

関連記事

この記事が気に入ったら「いいね!」しよう

follow us in feedly

Feedlyで最新記事を購読

Twitterで更新情報をゲット!

LINEでご感想・ご要望お送りください!
(スマホでLINEを起動 > 友だち追加 > QRコード)

プログラミング未経験者向けのプログラミング入門連載記事を始めます

こんにちは、@akio0911です。 これからプログラミング未経

【RxSwift】BehaviorRelayとPublishRelayについてまとめてみた

こんにちは、@akio0911です。今回はRxSwiftのBe

【RxSwift】materialize, dematealizeを使ってみた

@toshi0383さんに教えていただいた、RxSwiftのm

【RxSwift】ストリームのcompletedをつぶす(消し去る)方法

RxSwiftで元々のストリームからcompletedをつぶす

【RxSwift】completedかerrorが流れてきたらsubscribeはdisposeされる

RxSwiftにおいて、completedかerrorが流れて

→もっと見る

PAGE TOP ↑