Когда вы создаете подкласс UIImageView, есть пара различных способов, которыми приложение может вызвать объект к существованию. UIImageViews, созданные в Интерфейсном Разработчике, предварительно скомпилированы и загружены в память без вызова метода -(id)init
. Вместо этого они вызывают - (void)awakeFromNib
после загрузки содержимого пера в память.
Убедитесь, что для идентификатора вашего класса задан ваш подкласс, и установите userInteractionEnabled в методе awakeFromNib вашего подкласса. Это позволит вам установить взаимодействие с пользователем без привязки.
Чтобы полностью загрузить UIImageView программно, убедитесь, что вы выделяете из правильного класса. Ваш код вызывался из суперкласса UIImageView.
- (void)viewDidLoad {
foo = [[MyImageView alloc] initWithFrame:CGRectMake(0.0, 45.0, 324, 52.0)];
foo.image = [UIImage imageNamed:@"Picture 1.png"];
[self.view addSubview:foo];
[super viewDidLoad];
}
Это вызовет - (id)initWithFrame
из вашего подкласса вместо суперкласса и выполнит ваш собственный код. Это также отправляет вызовы - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
вашему подклассу, а не суперклассу.