touchesBegan EXC_BAD_ACCESS

时间:2013-07-10 00:46:21

标签: ios objective-c

我在“[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];
    }
}

2 个答案:

答案 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]; } }