Пользовательское взаимодействие с UIImageView работает странно

#iphone

#iPhone

Вопрос:

Я создаю UIImageView, как показано ниже

 imageView = [[UIImageView alloc] init];

imageView.image = [UIImage imageNamed:@"military_male_target_001.png"];

imageView.frame = CGRectMake(0, 0, 10, 10);

imageView.alpha = 0.5;
  

и у меня есть

    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {...}
  

в моем контроллере просмотра.

пока все хорошо, изображение отображается на экране и правильно реагирует на событие касания, что означает, что метод touchesEnded вызывается, когда я нажимаю внутри изображения.

но если я добавлю

 imageView.userInteractionEnabled = YES
  

тогда метод touchesEnded не будет вызываться, когда я нажимаю внутри изображения.
но он по-прежнему вызывается, когда я нажимаю за пределами изображения.

кто-нибудь может сказать мне, как работает userInteractionEnabled? заранее спасибо.

Ответ №1:

Причина, по которой он не был вызван, заключается в том, что вы дали imageView разрешение на захват касаний. imageView Теперь получит событие касания и не будет пересылать его дальше. Нет необходимости устанавливать userInteractionEnabled значение YES , если вы не планируете создавать пользовательский UIImageView интерфейс, который обрабатывает событие касания.

Документация:

Новые объекты просмотра изображений по умолчанию настроены на игнорирование пользовательских событий. Если вы хотите обрабатывать события в пользовательском подклассе UIImageView, вы должны явно изменить значение свойства userInteractionEnabled на YES после инициализации объекта.

Комментарии:

1. Спасибо. Я думал, что событие, наконец, будет передано родительскому.