2017-02-07 14 views
0

呼ばれないUIPanGestureRecognizerのデリゲートメソッド私はいくつかの奇妙な問題に直面しています、ここではデリゲートメソッドが呼び出されていないパンジェスチャースウィフト:

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を登録するための私のコードです。

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 
} 

}

私はコードをデバッグし、ラインself.gesture.delegateを印刷する場合代わりに、その後、デリゲートメソッドが呼び出さなっています。

私は上記の行を印刷する必要があるたびに動作します。私を助けてください、上記の問題をありがとう

+1

によってビュー用pangesture登録を追加することにより固定していますか? –

+0

@PiotrBernad、ご返信ありがとうございます。私は解決策を見つける、私はクラスのためのシングルトンの共有インスタンスを作成した、今は正常に動作しています。 – Raju

答えて

0

は、私は、sharedinstaceの下

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

そして、あなたはregisterGestureメソッド呼び出している

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