Commit fc2556fc by Daniel Dahan Committed by GitHub

Merge pull request #1019 from seubseub/master

Add Swipe Gesture at TabsController
parents 57540153 1202727e
...@@ -110,6 +110,18 @@ open class TabsController: TransitionController { ...@@ -110,6 +110,18 @@ open class TabsController: TransitionController {
@IBInspectable @IBInspectable
open let tabBar = TabBar() open let tabBar = TabBar()
/// A value that decide viewcontrollers swipeable. default value is false
open var isSwipeEnabled: Bool = false {
didSet {
if isSwipeEnabled {
prepareSwipeGesture()
} else {
removeSwipeGesture()
}
}
}
/// A delegation reference. /// A delegation reference.
open weak var delegate: TabsControllerDelegate? open weak var delegate: TabsControllerDelegate?
...@@ -340,6 +352,48 @@ extension TabsController { ...@@ -340,6 +352,48 @@ extension TabsController {
} }
} }
} }
/**
Prepare Swipe Gesture.
*/
fileprivate func prepareSwipeGesture() {
removeSwipeGesture()
let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(respondToSwipeGesture(gesture:)))
swipeRight.direction = .right
self.view.addGestureRecognizer(swipeRight)
let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(respondToSwipeGesture(gesture:)))
swipeLeft.direction = .left
self.view.addGestureRecognizer(swipeLeft)
}
/**
Remove Swipe Gesture.
*/
fileprivate func removeSwipeGesture() {
if self.view.gestureRecognizers != nil {
for gesture in self.view.gestureRecognizers! {
guard let swipeGesture = gesture as? UISwipeGestureRecognizer else { continue }
if swipeGesture.direction == .left || swipeGesture.direction == .right {
self.view.removeGestureRecognizer(swipeGesture)
}
}
}
}
@objc func respondToSwipeGesture(gesture: UIGestureRecognizer) {
if let swipeGesture = gesture as? UISwipeGestureRecognizer {
switch swipeGesture.direction {
case .right:
guard (selectedIndex - 1) >= 0 else { return }
select(at: selectedIndex - 1)
case .left:
guard (selectedIndex + 1) < viewControllers.count else { return }
select(at: selectedIndex + 1)
default:
break
}
}
}
} }
extension TabsController: TabBarDelegate, _TabBarDelegate { extension TabsController: TabBarDelegate, _TabBarDelegate {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment