3

我正在开发 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];

我该如何处理这个问题?

谢谢 !

4

1 回答 1

2

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

你有 3 个选项(也许更多,只是我能想到这 3 个):

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

2)用你的代码构建结构,但在动画发生后重新定位视图(但这可能会引起问题,因为你的图层也会被移动)。

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

于 2013-04-10T12:50:01.333 回答