#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;