2011-09-12 8 views
2

あなたがココアタッチで知っているように、GUIは複数のUIViewで構成されています。今私の見解ではx:10 y:10で整列されたUIImageView(画像を含む)があり、次にx:30 y:10で整列されたUILabelがあり、最後に別のUILabelがx: 。Objective-C - 複数のビューを同じタッチイベントに応答させますか?

ここで、これらのすべてのUIViewが同じタッチイベントに応答することを望みます。これを達成する最も簡単な方法は何ですか? UIViewを作成してx:10 y:10から整列させ、すべてのビューをカバーし、これらのビューの上にこのビューを配置することはできますか(-bringSubviewToFront)?

乾杯、

ピーター

答えて

0

私はあなたのバリアントはOKだと思います! UIViewを作成し、すべてのタッチイベントをキャッチしてください。

それとも、メインビューの1つのサブビューmergeView上のすべてのあなたのサブビュー(画像、ラベル、ラベル)を入れ、そのビューのユーザインタラクション(画像、ラベル、ラベル)を無効にし、mergeViewにジェスチャー認識を追加したり、あなたがしたいものは何でもすることができますキャッチタッチ。このようなアプローチでは、ビューの位置を変更するのが簡単になります。mergeViewの位置を変更するだけです。ユーザーの操作をmergeViewにすることを忘れないでください。

0

キャッチ明示的にタッチトップビューのイベントとは、あなたが興味を持っている他のビューにそれらのタッチを渡す。しかし、タッチポイントは、誰にあなたがタッチイベント

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

UITouch * touch = [[touches allObjects] objectAtIndex:0]; 

CGPoint point = [touch locationInView:topView]; 


if (CGRectContainsPoint(view1.frame, point)) { 

    [view1 touchesBegan:[NSSet setWithObject:touch] withEvent:nil]; 
} 

if (CGRectContainsPoint(view2.frame, point)) { 

    [view2 touchesBegan:[NSSet setWithObject:touch] withEvent:nil]; 
} 

} 
を送信している他のビューをinteresectsを確認します