2012-07-02 174 views
1

我的程序总是崩溃:类方法没有找到

-(void) moveImage:(UIImageView *)image duration:(NSTimeInterval)duration curve:(int)curve x:(CGFloat)x y:(CGFloat)y key:(NSString *)key 
{ 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:duration]; 
[UIView setAnimationCurve:curve]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationDidStopSelector:@selector(animationDidStop:)]; 

CGAffineTransform transform = CGAffineTransformMakeTranslation(x, y); 
image.transform = transform; 
[UIView commitAnimations]; 
} 

调用此方法,并在结束时,我想它来调用波纹管的方法:

-(void)animationDidStop:(NSString *)key 
{ 
if (key == @"burn") { 
    //The burn card has been moved and stopped. Ready for the next. 
    [self annPlayerRight]; 
} 

} 

我到底做错了什么?

+0

可能的重复[苹果拒绝的应用程序,因为animationDidStop:已完成:上下文:是非公开API](http://stackoverflow.com/questions/3455604/apple-rejected-app-because-of-animationdidstopfinishedcontext-是非公开的) – trojanfoe

回答

4

嗯,是因为setAnimationDidStopSelector:withObject:方法不存在... 的UIView的实际方法是:为setAnimationDidStopSelector方法 + (void)setAnimationDidStopSelector:(SEL)selector

(注意,withObject:部分缺失)

+0

那就是我的想法,我将如何发送它的参数? – JH95

+0

@JakeHoskins请参阅Jennis的答案... – Alladinian

3

检查Documentation

动画结束后发送给动画委托的消息。默认值是NULL。选择器应该是这样的形式:

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context. 

所以,当你调用beginAnimations有参数context这将是访问在animationDIdStop方法。

希望这会有所帮助。

+0

我看到了,但我仍然困惑,所以它不可能通过发送一个字符串作为参数:[UIView setAnimationDidStopSelector:@selector(animationDidStop :)]; – JH95

+0

现在没有。您只能通过上下文发送动画。 –

+0

只是询问'[UIView beginAnimations:nil context:NULL]是什么问题;'在上下文中发送参数? –