我有UIViewController。和UIView里面如何独立检测触摸?

时间:2013-06-24 21:16:09

标签: ios objective-c xcode touch uitouch

我有UIViewController。并且3 UIView里面如何独立检测触摸。

我有3个类,并在UIViewController中添加了对象

并且在每个类中都有这个方法,我需要触摸对象(UIView)独立响应事件

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

}

示例:

  • view1 NSLog(@“I Touched View 1”);

    view2 NSLog(@“I Touched View 2”);

    view3 NSLog(@“I Touched View 3”);

谢谢!

1 个答案:

答案 0 :(得分:4)

如果所有三个视图都是viewController视图的后代,则可以使用以下代码片段

for (UITouch *t in touches) {
    CGPoint p = [t locationInView:self.view];
    UIView *v = [self.view hitTest:p withEvent:event];
    NSLog(@"touched view %@", v);
}

修改

好吧,我猜你只有一个入口入口点(UIViewController)用于触摸检测你的子视图;如果像你说的那样,每个子视图都有一个课程,那么你已经解决了问题。除了将NSLog(@"touched..")代码放在每个touchBegan:withEvent:方法中之外,您无需执行任何其他操作。

E.g。

@implementation FirstSubview
.
.
-( void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"I touched View 1");
}
.
.
@end

注意:由于UIViewController也是UIResponder(即继承自UIResponder),您也可以使用我发布的第一个解决方案。