2017-04-13 10 views
0
Objective-Cで

、停止、私は処理アニメーションをロードします。ボタンが押されるperformSelectorInBackground

[self performSelectorInBackground:@selector(loadAnimation) withObject:self]; 

これは動作しloadAnimationの画像が表示されます。

ファイルをアップロードしたらどうやって止めるのですか?私は試した:

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(loadAnimation) object:nil]; 

しかし、これはアニメーションを停止しません。

loadAnimationは次のとおりです。

- (void) loadAnimation 
{ 
    loadingPng.hidden=NO; 
    NSArray *imageArray = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"0.png"], [UIImage imageNamed:@"1.png"], [UIImage imageNamed:@"2.png"], [UIImage imageNamed:@"3.png"], [UIImage imageNamed:@"4.png"], [UIImage imageNamed:@"5.png"], nil]; 

    loadingPng = [[UIImageView alloc] initWithFrame:CGRectMake(487, 500, 50, 50)]; 
    [self.view addSubview:loadingPng]; 
    loadingPng.animationImages = imageArray; 
    loadingPng.animationDuration = 1.5; 
    [loadingPng startAnimating]; 
} 
+0

'loadAnimation'メソッドではどうなりますか? – Zapko

+0

あなたの 'loadAnimation'メソッドの呼び出しがあれば、それはセレクタが宛先に"配送 "されたことを意味します。キャンセルするものは何もありません。 –

+0

リストされたすべての操作は比較的高速ですが、私はここに背景の必要性を見ません。 – Zapko

答えて

1

だけで物事を明確にするためにperformSelectorInBackgroundは、メソッドを実行し、(任意の実行ループに接続されていない場合は)死ぬ別のスレッドを作成します。

この実行中に画面上に何かが表示され、それを隠したい場合は、それを隠すために必要なルーチンを呼び出してください。 UIActivityIndicatorViewまたはUIImageViewを使用する場合は、-(void)stopAnimating(この場合は[loadingPng stopAnimating])としてください。

バックグラウンドでアニメーションを開始する必要はありません。実際には、UI操作を伴うものはメインスレッドでのみ実行することを強くお勧めします。

これはバックグラウンドに移行する必要があり、アニメーションのトリガーはメインスレッドにとどまります。

関連する問題