如何使UIScrollView在animation过程中发送scrollViewDidScroll消息

当用户手动滚动我的UIScrollView时,我的委托的scrollViewDidScroll方法会在animation期间被重复调用,并带有最近更新的contentOffset值。 当我调用“[scrollView setContentOffset:320 animated:YES”,然后委托方法被调用以相同的方式。 我认为正常的滚动速度对于用户体验来说太快了,所以在“animatedWithDuration:”块中包含了一个“[scrollView setContentOffset:320]”,正如Apple在UIView类的引用中所build议的那样。

但是…现在我的scrollViewDidScroll方法只在animation的开始处被调用了一次,而不是在animation中。 当我使用旧的“beginAnimations:”方法时,获得相同的效果。

所以…任何人都知道如何解决这个问题?

顺便说一句,UIScrollView的“setContentOffset”方法显示相同的行为。 它曾经在animation中被调用,现在只被调用一次。

感谢Fichek的暗示,我已经得到了这个工作。 就像Fichek说的那样,在animation过程中,你不会收到任何更改属性的通知。 所以诀窍是,确保取决于已更改属性的任何内容也同时生成animation。 您需要在原始属性的相同块中设置其animation。 如果你在animation上设置了“UIViewAnimationOptionAllowUserInteraction”,那么任何正在进行的用户交互的相同属性仍然可以工作,而且我不得不说。

对于我的具体情况 – 保持拖动视图静止,而UIScrollView滚动下面 – 这里是我如何设置我的animation:

[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^{ [theScrollView setContentOffset:offset]; // compute newCenter from the new offset theDraggedView.center = newCenter; } completion:^(BOOL finished) {}];