Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import UIKit
- final public class HideKeyboardTapGestureManager {
- // MARK: - Private
- public private (set) var targets: Set<UIView> = Set<UIView>() {
- didSet {
- targets.subtracting(oldValue).forEach {addGesture(to: $0)}
- }
- }
- private func addGesture(to target: UIView) {
- let gesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
- target.addGestureRecognizer(gesture)
- }
- @objc private func dismissKeyboard() {
- targets.first?.superview?.endEditing(true)
- }
- // MARK: - Public
- public func add(targets: [UIView]) {
- self.targets = self.targets.union(Set(targets))
- }
- public func remove(_ target: UIView) {
- target.gestureRecognizers?.forEach {target.removeGestureRecognizer($0)}
- self.targets.remove(target)
- }
- public func remove(_ targets: [UIView]) {
- targets.forEach {self.remove($0)}
- }
- public func removeAllTargets() {
- self.remove(Array(self.targets))
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement