0

ボタンがあるシーンがあります。ボタンをクリックすると、長方形のスプライトが左側からスライドします:http: //img255.imageshack.us/img255/9867/slidei.png

この形状の下に、いくつかのタッチセンシティブボタンがあります。長方形に触れたときに呼ばれたくない。したがって、形状が画面に残っている限り、それらのタッチは応答しないはずです。代わりに、その茶色の形の上に、タッチに反応する他のいくつかのボタンがあります。どうすればそれを管理できますか?

シーン内の特定のレイヤーのタッチを一時的に無効にすることはできますか?長方形はそれ自体でCCLayerオブジェクトになりますか?

背景が透明なその形状の新しいシーンを作成できることはわかっていますが、それでもボタンがタッチに反応するようにしたいです。

そのボタンをクリックすると、図形がスライドします。もう一度クリックすると、画面からスライドします。

4

2 に答える 2

2

touchesBegan メソッドが応答する実際のボタン オブジェクトまたは CGRect 領域を使用しているかどうかによって異なります。最もクリーンなアプローチは、必要に応じてボタン オブジェクトを直接有効/無効にすることであるという GamingHorror に同意します。

ただし、スライドするタッチ領域が UIView サブクラスである限り、これは実行可能なクラッジです。

スライドする前に、次の方法ですべてのユーザーのタッチを無効にすることができます。

[[[UIApplication sharedApplication] keyWindow] setUserInteractionEnabled:NO];

ビューがスライドインした後、その特定のビューで UserInteractionEnabled:YES を設定する必要がある場合があります。スライドするときは、すべて元に戻すことができます

[[[UIApplication sharedApplication] keyWindow] setUserInteractionEnabled:YES];

于 2010-11-23T20:16:06.027 に答える
0

他のユーザーインターフェイスと同様に、オブジェクトが有効になっているかどうかをオブジェクトに通知する必要があります。最善の策は、実際にはボタンにメッセージを送信して、ボタン自体をオンまたはオフにするように指示することです。

理想的には、個々のボタンやスライドが入力に反応するのではなく、グローバルタッチ入力ハンドラーを使用します。これは多くの問題と余分な作業を意味します。代わりに、入力に反応する必要のあるすべてのオブジェクトを同じレイヤーに配置し、そのレイヤーをタッチ入力ハンドラーに登録します。これにより、すべてのタッチイベントがその特定のレイヤーに転送され、他のレイヤーには転送されません。

于 2010-11-23T18:20:23.713 に答える