7

アプリに基本的な 3D Touch 機能を追加し始めたところですが、追加の最初の試みはうまくいき、かなり簡単に思えます。

しかし、ピークが終了し、ポップに入っていないことを検出する方法があるかどうか疑問に思っていました。

UIViewControllerPreviewingDelegate メソッドは、ピークまたはポップが要求されていることを伝えるのに適していますが、ピークが終了し、ポップに入っていないことを伝える方法がわかりません。

Peeked ViewController には、現時点で覗かれていることを知る方法があり、これで十分だと思います。基本的に、ビューに入るときに通常はいくつかのものを作成するセグエがあります。ユーザーがポップインせずにピークを終了することを選択した場合は、それを元に戻す必要があります。必要なクリーンアップを実行できるように、このケースを検出する良い方法を参照してください。

乾杯

4

2 に答える 2

15

を使用してプレビュー用に登録すると、プロトコルregisterForPreviewingWithDelegate()に準拠したコンテキストが返されます。UIViewControllerPreviewingそのプロトコルには、ピーキング/ポッピングで使用される と呼ばれるジェスチャ認識エンジンへの参照が含まれていますpreviewingGestureRecognizerForFailureRelationship。他のジェスチャ レコグナイザーが同時に認識される可能性がある場合に使用することを目的としていますが、独自のオブジェクトをターゲットとして追加して変更を観察することもできます。

今、覗いているとき、このジェスチャ認識エンジンの状態は になります.Changed。ポップせずに離すと状態が に変わり.Endedます。ポップすると、状態は次のように変わります.Cancelled(実際にはこれが逆になると予想していましたが、少なくとも違いはわかります)。重要なのは、この状態は、ピーク ビュー コントローラーの が呼び出されるに変更viewDidDisappearされるため、フラグを時間内に調整できることです。

于 2015-11-18T11:00:51.413 に答える