3

UIViews私は(ネストされていない)積み重ねられた束を持っています。全員がタッチに反応してほしいのですが、一番上のビューがその下のビューを覆い隠していて、タッチイベントを受け取れないようです。


hitTest最初は、一番上のビューですべてのタッチイベントをキャッチし、次に手動で、または基になるすべてのビューのメソッドを呼び出すと思いpointInsideましたが、両方のメソッドが何らかの形でプライベートであり(可能性がありますか?)、アクセスできないことがわかりました。

それをやってのける方法はありますか?

4

2 に答える 2

3

タッチは単一のビューに送信されます。そのビューは、オプションでそれらをレスポンダーチェーンに渡すことができます。ビューのコレクションへのタッチを処理する場合は、それらのイベントを次のレスポンダーに転送し、それらすべての共通の親(またはコントローラーもレスポンダーチェーンの一部であるため、ビューコントローラー)にそれらを処理させる必要があります。タッチします。

https://developer.apple.com/library/mac/documentation/General/Devpedia-CocoaApp-MOSX/Responder.html

于 2011-01-03T19:18:48.477 に答える
3

タッチが一番上のビューに適しているかどうかを確認できます。そうでない場合は、スーパービューと同じメソッドを呼び出すことができます。[self.superview sameMethod:sameParameter]のようなもの。

一番上のビューにはメソッドがあります

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

そのメソッドの中で、あなたはあなたの論理を正しくやっていますか?メソッド内では、受け取ったタッチが一番上のビューにあるかどうかを確認できません。

UITouch *touch = [touches anyObject];
[touch locationInView:self];

そうでない場合は、を使用してsuperViewの同じメソッドに渡します。

[self.superview touchesEnded:touches withEvent:event];
于 2011-01-03T14:12:10.113 に答える