2017-05-06 6 views
0

をスロー:previewingGestureRecognizerForFailureRelationshipのためのデリゲートを設定すると、私は次のコードを使用して(3Dタッチでかいま見&ポップ)プレビューのUIViewControllerを採用しようとしている例外

id<UIViewControllerPreviewing> context = [self registerForPreviewingWithDelegate:self sourceView:self.imageView]; 

実際にあるプロトコルUIViewControllerPreviewingpreviewingGestureRecognizerForFailureRelationshipでプロパティは、ありますUIGestureRecognizerのインスタンスは、私をたくさん混乱させる。 docとして

は言った:

はUIGestureRecognizerDelegateプロトコルに準拠して、それのためにデリゲートオブジェクトを実装することによって、このジェスチャ認識を使用します。私が設定したときに

しかし、previewingGestureRecognizerForFailureRelationshipためdelegateは、

context.previewingGestureRecognizerForFailureRelationship.delegate = self; 

エラーが発生しました:

キャッチされない例外により 'NSInvalidArgumentException'、理由にアプリを終了

***:「あなたをUIViewControllerPreviewing失敗関係ジェスチャ認識プログラムのデリゲートを変更できません '

このプロパティの使い方は?

答えて

0

私はこれについて数ヶ月遅れているようですが、それでも将来は誰かを助けるかもしれません。

ビューコントローラでregisterForPreviewingを呼び出すと、UIViewControllerPreviewingプロトコルに準拠したコンテキストオブジェクトが返されます。 UIGestureRecognizerDelegateメソッドで使用するために、そのコンテキストのpreviewingGestureRecognizerForFailureRelationshipへの参照を保存することや、他のジェスチャーの失敗を要求することができます。

//When registering for previewing 
let previewingContext = self.registerForPreviewing(with delegate: self, sourceView: self.view) 
self.previewingGestureRecognizer = previewingContext. previewingGestureRecognizerForFailureRelationship 

//Requiring failure for another gesture to be recognized 
let longPressGesture = UILongPressGestureRecognizer(target: self.view, action: #selector(handleLongPress(_ :))) 
longPressGesture.require(toFail: self.previewingGestureRecognizer) 
self.view.addGestureRecognizer(longPressGesture) 
関連する問題