【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の実装」
import UIKit class Swipe_EdgePan: UIViewController { @IBAction func rightSwipe(_ sender: UISwipeGestureRecognizer) { //左端から右へスワイプ print("right") } @IBAction func leftSwipe(_ sender: UISwipeGestureRecognizer) { //右端から左へスワイプ print("left") } }