Распознаватель пользовательского интерфейса и просмотр изображений

#uigesturerecognizer

#пользовательский распознаватель

Вопрос:

У меня есть UIImageView с подключенным UITapGestureRecognizer. Это просто шарик, движущийся по экрану. Он перемещается раз в секунду.

 ball.image = [UIImage imageNamed:@"chicken.png"];
ball.frame = CGRectMake(160, 160, 50, 50);
ball.autoresizesSubviews = NO;
speed = 10;
objTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(ballMove:) userInfo:nil repeats:YES];
recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
  

Метод, вызываемый при нажатии на ImageView, является

 -(void)handleTap:(UITapGestureRecognizer *)sender
{
    CGPoint obj = [sender locationInView:ball];
    NSLog(@"x = %f",obj.x);
    NSLog(@"y = %f",obj.y);
    .......
}
  

Он не захватывает все нажатия. Однако он распознает только те отводы, где y меньше 1.

 x = 14.958618
 y = 0.879913
x = 23.996643
 y = 0.975830
 x = 24.542923
y = 0.557907
  

И так далее…

Описание ImageView выглядит следующим образом: <UIImageView: 0x6814800; frame = (161.747 183.826; 50 1); непрозрачный = НЕТ; авторазмер = W H; авторазмер SUBVIEWS = НЕТ; слой = <CALayer: 0x6814880>>

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

1. <UIImageView: 0x6814800; frame = (161.747 183.826; 50 1); непрозрачный = НЕТ; авторазмер = W H; авторазмеры SUBVIEWS = НЕТ; layer = <CALayer: 0x6814880>>

2. Похоже, что размер фрейма изменяется на (50,1) Почему??? Спасибо!

Ответ №1:

Проверьте, включены ли ваши UIImageView взаимодействия:

 ball.userInteractionEnabled = YES;