转换层上的UIGestureRecognizer

时间:2013-04-10 12:30:13

标签: ios uigesturerecognizer cabasicanimation

我正在使用iPhone应用程序,并且手势识别器存在问题。

我在视图上添加了UITapGestureRecognizer,然后使用CABasicAnimation转换与此视图相关的图层。在此变换之后,手势识别器仅在变换之前视图占据的区域中工作。

希望我对这个问题的一点描述是可以理解的。

以下是一些代码:

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myViewTapped:)];
[self.myView addGestureRecognizer:tapGestureRecognizer];

CABasicAnimation * animation = [CABasicAnimation animationWithKeyPath:@"position.y"];
[animation setFromValue:[NSNumber numberWithFloat:0]];
[animation setToValue:[NSNumber numberWithFloat: - 100]];
[animation setDuration:.3];
[animation setTimingFunction:[CAMediaTimingFunction functionWithControlPoints:.55 :-0.25 :.30 :1.4]];
animation.additive = YES;
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
[self.myView.layer addAnimation:animation forKey:nil];

我该如何处理这个问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

您只为视图的图形部分(CALayer)设置动画,而不是负责用户交互的部分(UIView本身)。 您的代码移动图层并使其在其他位置被淹没,但不要更改框架(或边界+中心)。

你有3个选择(也许更多,我可以想到这3个):

1)使用基于UIView的动画[UIView animation...]

2)包含代码的struct,但在动画发生后重新显示视图(但这可能会引起问题,因为您的图层也会被移动)。

3)使用你的动画,但把手势识别器放在父(大)视图上,然后检查那里的事件......