我在“[subview touchesBegan:touches withEvent:event];”行中获得了EXC_BAD_ACCESS。当我删除该行时,一切正常。我做错了什么?
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for(UIView *subview in [self.view subviews]) {
NSLog(@"%@", subview);
NSLog(@"%@", touches);
NSLog(@"%@", event);
[subview touchesBegan:touches withEvent:event];
}
}
答案 0 :(得分:2)
没有回溯,很难说。
但是,touchesBegan:withEvent:
不是您应该从代码中调用的方法。它只应由系统调用。
更有可能的是,你在一个无法处理它的子视图上调用该方法,所以它调用它将它传递给它的superview
....然后,无限循环繁荣。 / p>
答案 1 :(得分:-2)
你不能直接调用“touchesBegan:touches withEvent:event”,它是iOS中的一个委托方法,由系统调用。如果你想将触摸事件发送到子视图,为什么不定义像“touchesBegan:”这样的方法,你想在touchesBegan中做什么,并像这样调用它:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for(UIView *subview in [self.view subviews]) {
NSLog(@"%@", subview);
NSLog(@"%@", touches);
NSLog(@"%@", event);
[subview touchesBegan];
}
}