暫無描述

GestureRecognizerProxy.swift 1.7KB

    // // GestureRecognizerProxy.swift // PaiaiUIKit // // Created by ffib on 2019/1/28. // Copyright © 2019 yb. All rights reserved. // import Foundation class GestureRecognizerProxy: NSObject, UIGestureRecognizerDelegate { weak var delegate: GestureRecognizerDelegate? init(target: GestureRecognizerDelegate) { delegate = target } func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { guard let d = delegate else { return false } return d.gestureRecognizerShouldBegin(gestureRecognizer) } func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { guard let d = delegate else { return false } return d.gestureRecognizer(gestureRecognizer, shouldReceive: touch) } func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { guard let d = delegate else { return false } return d.gestureRecognizer(gestureRecognizer, shouldRecognizeSimultaneouslyWith: otherGestureRecognizer) } } extension UIGestureRecognizer { private struct AssociatedKeys { static var proxyKey = "GestureRecognizerProxyKey" } private var proxy: GestureRecognizerProxy? { get { return objc_getAssociatedObject(self, &AssociatedKeys.proxyKey) as? GestureRecognizerProxy } set { objc_setAssociatedObject(self, &AssociatedKeys.proxyKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) } } func setDelegate(_ target: GestureRecognizerDelegate) { proxy = GestureRecognizerProxy(target: target) delegate = proxy } }