我有一个简单的程序,它创建一个子视图并在屏幕上对其进行动画处理。
作为该程序的一部分,我想在点击子视图时添加功能。我正在使用以下方法创建子视图,添加 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?