【Swift】スワイプ動作を実装

どうも、ねこきち(@nekokichi1_yos2)です。

 

スワイプ 動作の実装は、UISwipeGestureRecognizer、を使用。

 

疑問 

 

スワイプ動作を実装するUIGestureには、UIScreenEdgePanGestureRecognizer、がある。

 

だけど、ViewControllerに設置して、検知時の処理を登録しても、ちっとも反応してくれない。

 

何故だろうか?

 

import UIKit

class Swipe_EdgePan: UIViewController {
    
    @IBOutlet weak var edge: UIScreenEdgePanGestureRecognizer!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        edge.addTarget(self, action: #selector(edgepan))
    }
    
    @objc func edgepan(_ recognizer:UIScreenEdgePanGestureRecognizer) {
        if recognizer.state == .recognized {
            print("aaa")
        }
    }
    
}

 

結論

 

とりあえず、スワイプ動作は

  • UIScreenEdgePanGestureRecognizer

ではなく

  • UISwipeGestureRecognizer

で実装するように。

 

ソースコード

 

「コードでの実装」 

import UIKit

class Swipe_EdgePan: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let rightSwipe = UISwipeGestureRecognizer()
        rightSwipe.direction = .right
        rightSwipe.addTarget(self, action: #selector()) //#selector(関数名)
        let leftSwipe = UISwipeGestureRecognizer()
        leftSwipe.direction = .left
        leftSwipe.addTarget(self, action: #selector()) //#selector(関数名)
        self.view.addGestureRecognizer(rightSwipe)
        self.view.addGestureRecognizer(leftSwipe)
    }
    
}

 

「StoryBoardの実装」

f:id:nekokichi_yos2:20200428101641p:plain

f:id:nekokichi_yos2:20200428101652p:plain

import UIKit

class Swipe_EdgePan: UIViewController {
    
    @IBAction func rightSwipe(_ sender: UISwipeGestureRecognizer) {
        //左端から右へスワイプ
        print("right")
    }
    
    @IBAction func leftSwipe(_ sender: UISwipeGestureRecognizer) {
        //右端から左へスワイプ
        print("left")
    }
    
}