2009-08-28 13 views
0

私はiPhoneアプリケーションを開発中です。私の質問が非常に基本的なものであれば申し訳ありません。私はネットを検索しましたが、答えを得ることができませんでした。iphone - イベントをすぐに起動する方法

私の質問は、ユーザーがiphoneに触れると、前回のイベントが完了するのを待つのではなく、そのイベントが直ちにexexecutedされるようにすることです。 touchBeganメソッド内でwhileループ(異なるクラスに存在する)を呼び出します。私は別のタッチイベントを取得すると、そのループを停止したい。しかしtouchBeganイベントは、私がまだタッチが始まっている間に呼び出されるのではなく(代わりにキューに入れられます)。

以前のイベントが終了するのを待つのではなく、すぐにタッチイベントを発生させる方法を教えてください。

ありがとうございます。

答えて

1

iPhoneでは、次のイベントが処理される前に、1つのイベントが完了するまで実行する必要があります。基本的には、あなたのアプリがユーザーの入力に反応し続けるように、長時間実行されないコードが必要です。

これを処理する方法はいくつかあります。

  1. コードの一部を新しいスレッドに入れ、touchBeganメソッドからそのスレッドを開始します。
  2. またはループをメインスレッドで複数のイベントにする。あなたが呼び出すことによってこれを行うことができます:

    - (void)initializeLoop 
    { 
        loopCounter = 0; 
        [self performSelector:@selector(nextLoop) withObject:nil afterDelay:0.0]; 
    } 
    
    - (void)nextLoop 
    { 
        loopCounter++; 
        if (loopCounter<MaxCount) 
        [self performSelector:@selector(nextLoop) withObject:nil afterDelay:0.0]; 
    } 
    

新しいtouchEndedイベントがこれらの他のイベントとの間で処理することができるこの方法。遅延を0.0より大きく設定すると、アプリの応答性がさらに向上します。

関連する問題