2011-01-03 13 views
3

UIViewsの束が積み重なっています(ネストされていません)。私はすべての人に触れるように反応することを望みますが、一番上のビューはその下のビューを覆い隠し、タッチイベントを受け取ることを妨げるようです。まず同時に複数のUIViewでタッチイベントを受け取る

私は一番上のビューですべてのタッチイベントをキャッチして、手動ですべての基礎となるビューに
hitTest、またはpointInsideメソッドを呼び出すと思ったが、私は両方の方法は、何らかの形で民間していることがわかった(できましたそれですか?)とアクセスすることはできません。

どのようにそれをプルする方法はありますか?

答えて

3

タッチが最前面に表示されているかどうかを確認できます。そうでなければスーパービューの同じメソッドを呼び出すことができます。 [self.superview sameMethod:sameParameter]のようなものです。

あなたの一番上のビューでは、あなたのロジックを右に行っているというメソッド内法

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

を持っていますか?受け取ったタッチが

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

であなたの一番上のビューである場合、このメソッド内 あなたがチェックすることはできません、それはあなたが使用してスーパーの同じメソッドに渡していない場合

[self.superview touchesEnded:touches withEvent:event]; 
+0

タイプミス: "スーパー" => "スーパー" – Ralphleon

+0

ありがとう。これを修正しました。 –

3

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

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

関連する問題