サーフェス上で互いに一致するいくつかのゲーム タイルがあるジグソー パズルと比較できるゲームを開発しています (後で MainView として参照されます)。ゲームの開始時に、タイルは IdleView の MainView の下に配置されます。パンジェスチャーでタイルを動かします。タップ ジェスチャを使用してタイルを選択し、最後に回転ジェスチャでタイルを回転できるようにする必要があります。これにより、解決できたいくつかの問題が発生しましたが、タイルを一度に表示するには多くのタイルが必要なため、タイルを UIScrollView に配置する必要がありました。
私はいくつかの異なる実装を行いましたが、それらはすべていくつかの問題を引き起こしました。私が試したさまざまなアプローチを試してみます。
アプローチ 1. パン、タップ -> 並べて表示、回転 -> MainView
最初に、ゲーム タイルにタップとパンの認識機能を配置し、回転ジェスチャをメイン ビューに配置しました。これは、回転ジェスチャを実行するにはタイルが小さすぎるためです。そして、そのタイルはそれをパン ジェスチャとして解釈しました。これは、私が新しいアプローチを試みたことにつながります。
アプローチ 2. パン、タップ、回転 -> MainView
私の 2 番目のアプローチは、すべてのジェスチャ認識機能を MainView に配置することでした。次に、ジェスチャが認識されるたびに、タップとパンのジェスチャの場所にタイルがあるかどうかを確認します。
次に、回転ジェスチャの前に、タイルが選択されているかどうかを確認してから、対応するメソッドを呼び出します。これはうまくいきました!しかし、その後、画面全体に表示できるよりも多くのタイルを表示できるメカニズムが必要であることに気付きました。そこで、すべてにアクセスできるようにタイルを水平に配置する UIScrollView を追加しました。下にちょっと描いてみました。
---------------------
| |
| |
| |
| Height 370 p |
| |
| MainView |
| |
| |
| |
| |
| |
| |
---------------------
| Height 110 p |
| IdleView |
| UIScrollView |
| |
| |
---------------------
次に、GameTiles をサブビューとしてスクロールビューに追加して、ビューと共にスクロールできるようにしました。その後、それらは私の MainView のサブビューではないため、私のタッチに耳を傾けなくなりました。だから今、私はもはや何をすべきかわからない膠着状態に陥っています。アプローチ 1 に戻り、UIScrollView に canCancelContentTouches = NO を設定すると、タイルを移動できます。しかし、回転ジェスチャで再び問題が発生し、タイルをスクロールビューからメインビューに移動できるように衝突検出を行う必要があります。
この問題に関する多くのさまざまな投稿を読みましたが、まだ理解できていません。
タッチを台無しにせず、ジェスチャー認識機能を使用できるように適切なサイズにすることができる UIScrollView とは別の方法で、誰かが私にいくつかのポインターを与えることができますか? または、タイルを UIScrollView から MainView にスムーズに移動し、他のタイルをパンせずにタイルを回転させる方法。