众所周知,在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
)?
干杯,
彼得
答案 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];
}
}