0

私のiPhoneゲームのappDelegateには、「UIWindowwindow」メンバー変数があります。UIImageViewsをウィンドウに追加し、ゲームプレイ中にそれらを移動します。UIWindowのタッチを処理したいのですが。 これどうやってするの? UIWindowをサブクラス化する必要がありますか?

touchesBegan :withEventメソッドとtouchesEnded:withEventメソッドをウィンドウに追加しようとしましたが、呼び出されません(おそらく、ウィンドウがUIImageViewsで覆われているためです...たとえば、ゲームの背景はUIImageViewであり、画面全体を覆っています)。

乾杯!

4

1 に答える 1

2

はい、UIImageViewがウィンドウを覆い、タッチを受け入れる場合、タッチは通過しません。このようなコードをUIImageViewのtouchesBeginに配置して、オブジェクトのレイヤー内の次のオブジェクトにタッチを渡すことができます。

  [self.nextResponder touchesBegan:touches withEvent:event];

以前にこの道を進んだことがあります(ウィンドウまたはメインUIViewでゲーム内の多くのものを制御します)。各UIImageViewでタッチイベントをキャプチャして処理することを検討することをお勧めします。UIImageViewは、必要に応じて他のオブジェクトに情報を渡すことができます。

UIWindowViewProgrammingGuideに関するAppleのドキュメントは、コードをウィンドウの外に置いてビューに配置するように努めるべきだと示唆しているようです。

于 2010-12-28T18:43:17.263 に答える