web-dev-qa-db-ja.com

タッチ検出を無効にするにはどうすればよいですか?

実行中のアクション内でタッチ検出を無効にするにはどうすればよいですか。プレーヤーがアクション内でクリックしてクリックした場合にキャラクターがスーパーマンのように空を飛ぶことを望まないため、クリックし続けるとキャラクターは着陸しません。メソッド「isDone」を見つけましたが、これはこのメソッドに関連していますか?プレイヤークリック->アクション(アクション内でクリックできません)->アクション終了->もう一度クリック.....それが私が欲しいものです〜

20
Criz

これはあなたの質問に対する最良の答えです:

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];

[[UIApplication sharedApplication] endIgnoringInteractionEvents];
48
Biranchi

アクションが完了するまでビューでのユーザーインタラクションを無効にしてから、再度有効にします。

タッチを無効にするには

[self.view setUserInteractionEnabled:NO];

タッチを有効にするには

[self.view setUserInteractionEnabled:YES];

次回は、もう少し簡潔にしてみてください。

45
lostInTransit

In Swift 2.2

self.view.userInteractionEnabled = false
2

Swift 3.0

self.view.isUserInteractionEnabled = false

あなたがCocos2Dの特定のActionクラスについて話しているという大げさな仮定をするつもりです。それが本当なら、すべてのアクションに「isDone」ブール値があり、それが完了したかどうかを確認できることを知っておく必要があります。それがあなたが求めているものであるかどうか私に知らせてください、そして私は例を投稿します、しかしあなたの言葉遣いがとても混乱しているのであなたが何か他のものについて話している可能性が非常に高いです;)

1
Matt Rix

おそらく私はあなたの質問を理解していませんでしたが、これはあなたが探しているものですか?

- (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
  [Superman Fly];
  self.isTouchEnabled = NO;
}

- (void)SupermanLanded{
  self.isTouchEnabled = YES;
}
0
Mattias Akerman

タップ入力を「無効」にする領域の上に透明なUIViewをいつでも配置し、タップをリッスンさせ、それらを無視させることができます。入力を再度リッスンする場合は、UIViewを削除(または非表示)します。

0
Dave Martorana

ある種の(単純なバージョンの)ブール値を使用して覚えてみませんか。つまり、isInAction = trueであり、アクションが終了した後はisInAction = false .. ..

だから誰かがクリックすると、あなたは次のようなものを使用します

if (!isInAction) {
   isInAction=true;
   try {
     doYourAction;
   } catch {
     ...
   } finally {
     isInAction=false;
   }
}

//コードは、私が意味することを視覚化するためだけに、まだIPhone用にプログラムしていないため、ある種の擬似コードです。

0
Xn0vv3r