いくつかの考え:
基本的なプロセス:テーブルビューを右側に追加していることを考えると、左にスワイプして所定の位置にスライドさせたいと思います。そのジェスチャーは、テーブル ビューではなく、メイン ビューにある必要があります。次に、右にスワイプして右にスライドさせて戻すと仮定すると、そのジェスチャーはこのobj
子コントローラーで行われます。
UIScrollView サブクラスを扱うときの標準的なジェスチャーの警告:テーブルビューの上のスワイプ ジェスチャーは、実際には 100% 信頼できるわけではありません。スワイプジェスチャではなく、テーブルビューのパンとして処理されます。しかし、それは小さな UI の問題です。(余談ですが、これが、テーブルビュー自体ではなく、画面上部のナビゲーション バーにスワイプ/パン ジェスチャを追加するアプリが増えている理由です。)
改良点:標準のスワイプ ジェスチャを使用している場合、direction
をUISwipeGestureRecognizerDirectionLeft
または...Right
に設定するだけで、ジェスチャ認識システムはジェスチャを適切に検出し、現実世界のバリエーションを処理するなど、非常にうまく機能します。自分で身振りをする (またはtouches
イベントをいじる) と、ロジックの制限が厳しすぎる場合 (たとえば、y
.
要するに、まだ問題がある場合は、ジェスチャ作成コードを共有してください (ジェスチャが条件付きロジックを適用する場合は、ジェスチャ コード自体も)。
当面の問題とは関係ありませんが、ビュー コントローラーについて常に iOS に通知することをお勧めします。WWDC 2011 - Implementing View Controller Containmentを見ると、ビュー階層がコントローラー階層と同期しなくなる危険性について警告されます。
つまり、コントローラーのビューをサブビューとして追加するだけでは十分ではありません。幸いなことに、修正は非常に簡単です。View Controller コンテインメントを実装できます。したがって、子コントローラーを追加するには、サブビューを追加する前に次のように呼び出す必要があります。
[self addChildViewController:obj];
サブビューを追加してそのフレームの構成を完了したら、iOS に完了したことを伝えます。
[obj didMoveToParentViewController:self];
これら 2 つの呼び出しを行わないと、View Controller に配信されない iOS イベントが発生する可能性があります。