UI动画块接触

时间:2014-04-25 11:58:41

标签: ios objective-c

我使用以下代码为UIScrollview中的某些文字制作动画。但我怀疑这段代码阻止了我的触摸事件。

我读到我需要设置动画选项并使用UIViewAnimationOptionAllowUserInteraction启用触摸。但我无法在不使用AnimateWithDuration块的情况下使用该选项。如何将UIViewAnimationOptionAllowUserInteraction与以下代码块一起使用。

-(void) startAnimation
{
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self cache:YES];   
    NSTimeInterval animationDuration =  self.contentSize.width/kPixelsPerSecond;
    [UIView setAnimationDuration:animationDuration];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
    self.contentOffset = CGPointMake(self.contentSize.width - self.frame.size.width, 0);

    [UIView commitAnimations];
}

1 个答案:

答案 0 :(得分:0)

你问:

  

如何使用UIViewAnimationOptionAllowUserInteraction   以下代码块。

答案:你不能。从iOS 4开始,不鼓励使用beginAnimations / commitAnimations技术。这是3个主要版本之前的版本。自iOS 4以来,Apple尚未更新那些旧式动画,并且可能会在某些时候弃用它们。

您应该使用较新的animateWithDuration:animations:样式动画代码。它可以执行旧的beginAnimations / commitAnimations代码所能做的所有事情,以及更多内容(例如使用UIViewAnimationOptionAllowUserInteraction设置,仅作为示例。

(请注意,通过简单地使用UIViewAnimationOptionAllowUserInteraction选项,您无法处理正在屏幕上移动的视图。您必须编写在父视图中接收触摸的特殊代码,然后在presentationLayer上进行测试正在制作动画的视图。这似乎与你想要做的事情无关,但它仍然值得注意。)