【问题标题】:I have UIViewController. And UIView inside How detect touchs independently?我有 UIViewController。而 UIView 里面如何独立检测触摸?
【发布时间】:2013-06-21 12:54:14
【问题描述】:

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

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

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

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

}

示例:

  • view1 NSLog(@"我触摸了视图 1");

    view2 NSLog(@"I Touched View 2");

    view3 NSLog(@"I Touched View 3");

谢谢!!

【问题讨论】:

  • 我想我现在正确理解了您的问题,如果不是这样,请更准确。

标签: ios objective-c xcode touch uitouch


【解决方案1】:

如果这三个视图都是你的 viewController 的视图的后代,你可以使用下面的代码 sn -p

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: 方法之外,您无需执行任何其他操作。

例如

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

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

【讨论】:

  • 还有,试试看this related question
  • 谢谢...这很好用!但是当触摸 UIView 1 时,我该怎么办事件被父亲捕获?这是可能的??例如 Touch UIView 1 和(父亲)“设置”viewcontroller.alpha=0 对不起我的英语......
  • 有几种方法可以做到这一点,例如,您可以使用我提到的第一个解决方案或通过委托回调视图控制器(请参阅link)或使用更标准的方法,基本上包括通过-addTarget:action:forControlEvent 添加到您的UIButtonsa 目标\操作(请参阅link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多