Objective-C - 使多个视图响应同一个触摸事件?

时间:2011-09-12 07:56:54

标签: objective-c cocoa-touch events

众所周知,在Cocoa-touch中,GUI由几个UIView组成。现在在我看来,我有一个UIImageView(包含一个图像),它在x:10 y:10处对齐,然后我有一个UILabel在x:30 y:10处对齐,然后是另一个UILabel {1}}对齐x:50 y:10。

现在我希望所有这些UIView响应同一个触摸事件。最简单的方法是什么?是创建一个{x}来对齐x {10}:10并覆盖所有视图,然后将此视图置于这些视图之上(UIView)?

干杯,

彼得

2 个答案:

答案 0 :(得分:0)

我认为你的变体还可以!只需创建UIView并通过它捕获所有触摸事件。

或者您可以将所有子视图(图片,标签,标签)放在主视图的一个子视图mergeView上,禁用该视图的用户交互(图像,标签,标签)和mergeView添加手势识别器或任何你想要接触的东西。通过这种方法,您可以更轻松地重新定位视图:只需重新定位mergeView即可。不要忘记启用mergeView的用户互动。

答案 1 :(得分: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];
}

}