我创建了一个应该处理所有触摸,滑动......的视图。此视图将始终位于所有其他视图的顶部,并将覆盖设备屏幕。我想要的是这个视图获取所有事件,以透明的方式处理它们。
我尝试过使用:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
NSSet *tmpTouches = [event allTouches];
if (tmpTouches.count == 1)
NSLog(@"1 tap detected");
else if (tmpTouches.count == 2)
NSLog(@"w tap detected");
else if (tmpTouches.count == 3)
NSLog(@"3 tap detected");
UIView *hitTestView = [super hitTest:point withEvent:event];
if (hitTestView) {
hitTestView = nil;
}
return hitTestView;
}
但在事件中未检测到触摸
在下一个方法上,如果返回YES
我可以使用- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
...等,但是如何将触摸事件发送到下一个视图。如果返回NO
该视图对系统是透明的,但我没有接触到任何内容..
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
return NO;
}
任何帮助将不胜感激!
答案 0 :(得分:0)
在主视图中引用子视图。使用touchesBegan等机制抓住你的触摸。在主视图中,直接调用子视图中应该处理thate事件的方法。换句话说,主视图吸收事件,然后在子视图中调用适当的方法。这比试图在两个视图之间分配事件更容易。