2010-05-19 3 views
0

Итак, у меня есть UIView, который был настроен, и в каждом обработчике событий touch у меня есть NSLog, который отключает сообщение на консоли.initWithCoder, нарушающий мои события касания (touchBegan, touchMoved и т. Д.)

- (void) touchesBegan:(NSSSet*)touches withEvent:(UIEvent*)event { 
    NSLog(@"touchesBegan"); 
} 

И это в значительной степени работает, как ожидалось. Но как только я реализую initWithCoder (даже пустой)

- (id)initWithCoder:(NSCoder*)coder { 
    return self; 
} 

Я больше не получаю сообщение на моей консоли (или может ударить точки останова, очевидно).

Это мое первое приложение, поэтому я, вероятно, пропустил что-то немое, но я просмотрел различные приложения для примера, и, похоже, я не вижу кода, который бы повторно активировал события касания.

ответ

4

Вам необходимо обработать -initWithCoder: так же, как вы бы начали, даже для пустого имплантации; то есть:

Для каждого объекта обычно вызывается только одно сообщение об общении, если только вы не связываете их. Таким образом, если вызывается -initWithCoder:, -initне является. И когда -init не называется, о мальчик ...

Как способ осветления: Объекты, загруженные с наконечниками инициализируются -initWithCoder:, что в реализации по умолчанию, очевидно, вызывает -init где-то.

Смежные вопросы