#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. Спасибо. Я думал, что событие, наконец, будет передано родительскому.