2011-11-09 10 views
0

ユーザは、ゲームピース(i番目の画像ビュー)を目的の場所にドラッグします。プログラムはカウントし、すべてのアイテムが正しい場所にあることを確認し、「Game Over」を発表し、userInteractionEnabledをNOに設定します。TouchesEndedを強制する方法

素晴らしいですが、ユーザーの指がまだゲームピースに落ちている場合、ユーザーは偶然、対象エリアからピースをドラッグして戻すことができます。 「Game Over」が表示されていますが、その作品は正しい場所にはありません。

ピースが最終的な目的地にあるときにゲームピースとの接触が(効果的に)壊れるようにtouchesEnded(touchesEndedを検出しない)を強制する方法はありますか?それは外れている)?

userInteractionEnabled = NOタッチが解除されるまで有効ではないようです。

答えて

0

touchesEndedを強制する方法がわかりません。

明らかに、これを処理する1つの方法は、ゲームが終了したことを示す状態を維持し、その状態にあるゲームピースを移動させないようにすることです。

beginIgnoringInteractionEventsを試してみることもできますが、これはあなたが探していることを行うとは思わないでしょう。私は実際にあなたのアプリケーションの状態を管理して、あなたが正しいことを確実にすると思っています。終わりの状態に達すると作品を動かさず、行く方法です。 iOS用のガイドを取り扱い、Appleのイベントから

は、期間のタッチイベントの配信をオフにします。アプリケーションは UIApplicationメソッドbeginIgnoringInteractionEventsを呼び出し、後で endIgnoringInteractionEventsメソッドを呼び出すことができます。第1の方法は、アプリケーションがタッチイベントを完全に受信するのを停止する。 。第2の メソッドが呼び出され、そのようなイベントの受信を再開します。あなたのコードが のアニメーションを実行している間に、時々 イベント配信をオフにしたい場合があります。

0

この質問は、自分のアプリケーション内で非常に似た動作をしたいと思った後に見つかりました。動いているアクション(touchDownアクションメソッドのような)をクリックした直後にtouchesEnded:メソッドを実行したいが、これを実現する方法がわからなかった。結局、これは私がやったことであり、それは働いた! :

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
... 

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 

    [self touchesEnded:touches withEvent:event]; 
}); 
} 

これは完全に機能しました。

関連する問題