iOS
 Computer >> コンピューター >  >> プログラミング >> iOS

iOSアプリで右・左のスワイプジェスチャを検出して処理する方法

iOSアプリでスワイプジェスチャを処理するには、Swiftでサンプルアプリを作成しながら確認していきましょう。実装方法は主に2つあり、「Storyboardを使う方法」と「コードで実装する方法」があります。それぞれの手順を詳しく見ていきます。

方法1:Storyboardを使って実装する

まず、オブジェクトライブラリから「Swipe Gesture Recognizer」をドラッグし、スワイプジェスチャを追加したいビューコントローラー上にドロップします。

次に、追加したジェスチャをクリックした状態でControlキーを押しながらビューコントローラーのクラスへドラッグし、IBActionとして接続を作成します。このとき、接続のSender(送信元)の型がUISwipeGestureRecognizerになっていることを必ず確認してください。

@IBAction func swipeMade(_ sender: UISwipeGestureRecognizer) { }

スワイプの方向を判定する

UISwipeGestureRecognizerには、スワイプされた方向を保持するdirectionプロパティが用意されています。このプロパティは列挙型(enum)であり、以下の4つの値を取ります。

  • .right(右方向)
  • .left(左方向)
  • .down(下方向)
  • .up(上方向)

ここで重要なポイントは、1つのスワイプジェスチャレコグナイザーが扱える方向は1つだけという点です。そのため、逆方向のスワイプも検出したい場合は、もう1つレコグナイザーを配置し、Attributes Inspectorでdirectionを「Left」に設定しましょう。

また、新しく追加したレコグナイザーのアクションも、最初のレコグナイザーと同じメソッド(swipeMade)に接続しておくことを忘れないでください。

方法2:コードで実装する

Storyboardを使わずにコードだけで実装する場合は、viewDidLoadに以下のようなコードを追加します。

override func viewDidLoad() {
    super.viewDidLoad()

    let leftRecognizer = UISwipeGestureRecognizer(target: self,
        action: #selector(swipeMade(_:)))
    leftRecognizer.direction = .left

    let rightRecognizer = UISwipeGestureRecognizer(target: self,
        action: #selector(swipeMade(_:)))
    rightRecognizer.direction = .right

    self.view.addGestureRecognizer(leftRecognizer)
    self.view.addGestureRecognizer(rightRecognizer)
}

ここでは左方向用と右方向用の2つのレコグナイザーを生成し、それぞれのdirectionプロパティを設定したうえで、ビューに追加しています。

共通のアクション処理

どちらの方法で実装した場合でも、スワイプを検知した際に呼び出されるswipeMadeメソッドの処理内容は共通です。senderのdirectionプロパティを判定することで、左スワイプか右スワイプかを簡単に判別できます。

@IBAction func swipeMade(_ sender: UISwipeGestureRecognizer) {
    if sender.direction == .left {
        print("left swipe made")
    }
    if sender.direction == .right {
        print("right swipe made")
    }
}

このアプリを実機やシミュレータで実行すると、ビューが空のため画面上には何も表示されませんが、画面を左または右にスワイプするとコンソールに対応する方向のログが出力され、スワイプが正しく検知されていることが確認できます。

  1. iOSの「ファイル」アプリでファイルをZIP圧縮・解凍する方法

    iOSでのファイル管理は、Appleのモバイルエコシステムが持つ厳格なセキュリティの影響もあり、かつては手間のかかる作業でした。しかし、iOS 11で「ファイル」アプリが登場してからは状況が大きく改善されました。このアプリを使えば、デバイス本体(ローカル)やiCloud Driveに保存したファイルを閲覧・アクセスできるだけでなく、Google DriveやDropboxなどの外部ストレージサービスとの連携も可能です。 さらに、「ファイル」アプリでは、任意のファイルやフォルダをZIP形式で圧縮(アーカイブ化)することもできます。アーカイブを作成するメリットは、ファイルサイズを小さく抑えられ

  2. Android・Windows・iOSでアプリを強制終了する方法【デバイス別ガイド】

    アプリやプログラムが突然動作しなくなったり、応答しなくなったりすることは、誰にでも起こり得ます。画面に「アプリが動作を停止しました」といった警告メッセージが表示され、強制終了せざるを得ない場面もあるでしょう。PCでは古くから「Ctrl + Alt + Delete」が定番の対処法ですが、iPhoneやiPad、Androidなどのデバイスではどうすればよいのでしょうか。実は、最新のモバイルデバイスでもアプリがフリーズしたり、不安定な状態に陥ったりすることは珍しくありません。幸いなことに、Windowsだけでなく、あらゆるOSには問題のあるアプリを強制的に終了させる方法が用意されています。強制終