2017-02-07 4 views
0

rief ich einige seltsame Problem konfrontiert bin, hier ist mein Code pan Geste für die RegistrierungSwift: UIPanGestureRecognizer Delegatmethode nicht

public func registerGesture(_ view: UIView) { 

     self.gesture = UIPanGestureRecognizer(target: self, action: #selector(handleGesture(_:))) 
     self.gesture?.minimumNumberOfTouches = 1 
     self.gesture?.maximumNumberOfTouches = 1 
     self.gesture?.delegate = self 

     view.addGestureRecognizer(self.gesture!) 
} 

UIPanGestureRecognizer Delegatmethode wird nicht aufgerufen.

extension PanGestureHandler : UIGestureRecognizerDelegate { 

    public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
     guard let g = self.gesture else { return false } 
     guard g.view is UIScrollView else { return false } 
     return true 
} 

    public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy 
    otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
     return false 
} 

}

Stattdessen, wenn ich den Code debuggen und drucken Sie die Zeile self.gesture.delegate, dann ist die delegierte Methode aufgerufen zu werden.

Jedes Mal, wenn ich die obige Zeile drucken muss, um zu arbeiten. Bitte helfen Sie mir, Dank

+1

Wo Sie registerGesture Methode aufrufen? –

+0

@PiotrBernad, danke für deine Antwort. Ich finde die Lösung, ich habe eine gemeinsame SharedInstance für die Klasse erstellt, jetzt funktioniert es gut. – Raju

Antwort

0

Für die oben genannten Problem, habe ich durch Zugabe von unten sharedinstace fixiert,

static let sharedInstance : PanGestureHandler = { 
    let instance = PanGestureHandler() 
    return instance 
    }() 

Und durch die pangesture für Ansicht Registrierung

let gestureInstance = PanGestureHandler.sharedInstance 
    gestureInstance.registerGesture(self.view) 
Verwandte Themen