使ってます
[self performSelector:@selector(someMethod) withObject:nil afterDelay:1];
時間遅延後にメソッドを何度も呼び出す。正常に動作していますが、問題は、次のクラスに移動しても、実行セレクターが前のクラスでバックグラウンドで実行されていることです。
なので、以下を使ってキャンセルしてみます
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(someMethod) object:nil];
しかし、それは機能していません。私はでこれをしましたviewDidDisappear
。実行セレクターをキャンセルする方法を教えてもらえますか?
これが私のコードです
-(void)textCalling
{
NSString *str2=@"Something";
UILabel *lbl =(UILabel*)[arrObj objectAtIndex:count2];
[lbl setAlpha:0];
lbl.numberOfLines=0;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
lbl.text=str2;
[UIView setAnimationDuration:0.0];
[lbl setAlpha:0];
[UIView commitAnimations];
}
-(void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
{
UILabel *lbl =(UILabel*)[arrObj objectAtIndex:count2];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0];
[lbl setAlpha:1];
[UIView commitAnimations];
count2++;
if (count2<[arrCourse count]) {
[self performSelector:@selector(textCalling) withObject:nil afterDelay:1];
}else{
count2=0;
[self performSelector:@selector(imageCallingCourse) withObject:nil afterDelay:1];
}
}
-(void)imageCallingCourse
{
imgViewObj.image=[UIImage imageNamed:@"Objective.png"];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStopImageCourse:finished:context:)];
[UIView setAnimationDuration:0.0];
[imgViewObj setAlpha:0];
[UIView commitAnimations];
}
-(void)animationDidStopImageCourse:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
{
NSLog(@"animationDidStopImage1");
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0];
[imgViewObj setAlpha:1];
[UIView commitAnimations];
}