У меня есть простая программа, которая создает подвид и анимирует его на экране.
В рамках этой программы я хотел бы добавить функциональность при нажатии на подвид. Я использую следующий метод для создания подпредставления, добавляю UITapGestureRecognizer и затем анимирую подпредставление:
int randomName = arc4random() % ([pieceNames count] - 1);
int animationDuration = arc4random() % 5 + 5 ;
NSString *randomPiece = [pieceNames objectAtIndex:randomName];
float yStart = arc4random() % 650;
float yEnd = arc4random() % 650;
UIView *piece = [[PieceView alloc]initWithFrame:CGRectMake(100.0, yStart, 75.0, 75.0)];
[piece setValue:randomPiece forKey:@"name"];
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc]initWithTarget:self
action:@selector(handleTouch:)];
[piece addGestureRecognizer:recognizer];
[[self view] addSubview:piece];
[UIView animateWithDuration:animationDuration
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^(void){
piece.center = CGPointMake(950.0, yEnd);
} completion:^(BOOL done){
[piece removeFromSuperview];
}];
Вот код, который обрабатывает тап:
PieceView *pv = (PieceView *) recognizer.view;
NSLog(@"%@ was tapped", pv.name);
Что происходит, так это то, что при прикосновении к PieceView программа не отвечает. Однако, если я удаляю блок анимации, программа реагирует на нажатие.
Почему UITapGestureRecognizer не отвечает на PieceView, когда он анимирован?