implement in UIViewController
I had implemented the screen edge swipe with using UIScreenEdgePanGestureRecognizer, without Storyboard.
We need to add edgePan to ViewController.view. if you want to handle the acton, you have to use #selector.
class ViewController: UIViewController {
private let closer = SwipeEdgeCloser()
override func viewDidLoad() {
super.viewDidLoad()
let edgePan = UIScreenEdgePanGestureRecognizer(target: self, action: #selector(handleScreenEdgeSwiped))
edgePan.edges = .left
view.addGestureRecognizer(edgePan)
}
@objc func handleScreenEdgeSwiped(_ recognizer: UIScreenEdgePanGestureRecognizer) {
if recognizer.state == .recognized {
print("Screen edge swiped!")
}
}
}
new class implemented Edge Swipe Gesture
If you do not like "fat UIViewController", you should new class implemented Edge Swipe Gesture.
class ViewController: UIViewController {
private let closer = SwipeLeftEdgePanGesture()
override func viewDidLoad() {
super.viewDidLoad()
view.addGestureRecognizer(closer.panGesture)
}
}
final class SwipeLeftEdgePanGesture {
let panGesture: UIScreenEdgePanGestureRecognizer
init() {
panGesture = UIScreenEdgePanGestureRecognizer()
panGesture.edges = .left
panGesture.addTarget(self, action: #selector(SwipeLeftEdgePanGesture.screenEdgeSwiped))
}
@objc private func screenEdgeSwiped(_ recognizer: UIScreenEdgePanGestureRecognizer) {
if recognizer.state == .recognized {
print("SwipeLeftEdgePanGesture: Screen edge swiped!")
}
}
}