От всей души я могу думать о двух способах, которыми вы можете достичь этого.
Либо работайте с UIButton
вместо UIImageView
. Установите тип кнопки «пользовательский» в Интерфейсном Разработчике и выберите изображение в качестве фонового изображения кнопки. Назначьте IBAction
кнопке и сделайте ее невидимой для ваших действий.
Если - по какой-либо причине - вам нужно придерживаться UIImageView
, создайте подкласс, который переопределяет -touchesBegan:inView:
. Кроме того, убедитесь, что для свойства userInteractionEnabled
представления изображения установлено значение YES
, чтобы ваш селектор -touchesBegan:inView:
вызывался всякий раз, когда пользователь касается представления. Значение по умолчанию для этого свойства для UIImageView
равно NO
, поэтому последний шаг важен!
Обновление Вот пример кода, который поможет вам начать работу с кнопочным подходом на случай, если вам понадобится сделать это программно:
UIButton* btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setBackgroundImage:img forState:UIControlStateNormal];
[btn addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];