所以我有一个已设置的UIView,并且在每个触摸事件处理程序中,我都有一个NSLog触发了一条消息到控制台。
- (void) touchesBegan:(NSSSet*)touches withEvent:(UIEvent*)event {
NSLog(@"touchesBegan");
}
这几乎按预期工作。但是一旦我实现了initWithCoder(甚至空白)
- (id)initWithCoder:(NSCoder*)coder {
return self;
}
我不再收到消息到我的控制台(或者显然可以点击断点)。
这是我的第一个应用程序,所以我可能错过了一些愚蠢的东西,但我查看了各种示例应用程序,并且我似乎没有遗漏任何会重新启用触摸事件的代码。
答案 0 :(得分:4)
您需要像初始化一样对待-initWithCoder:
,即使是空白的实施也是如此;也就是说:
- (id) initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if (self) {
// Do initializations. Or not.
}
return self;
}
通常只为每个对象调用一条init消息,除非您将它们链接起来。因此,如果调用-initWithCoder:
,则-init
不是。当-init
没有被召唤时,哦,男孩......
作为澄清方式:从nib加载的对象使用-initWithCoder:
初始化,在默认实现中显然会在某处调用-init
。