開始する前に、私はyourView.userInteractionEnabled = NO;
がオプションですが、最初にその状況を説明します。他のUIViewがスワイプされたときに1つのUIViewでユーザーの操作を無効にする
私はこれらのオブジェクトがUIView
であり、stoneOne
とstoneTwo
です。私は4 UISwipeGestureRecognizer
のオブジェクトを上下、左右につけて添付しています。これらの「石」を5x5のグリッドの周りをスワイプすると想像してください。
私がしたくないことは、同時に両方をスワイプできることです。
現在、このバグはまだ問題です。すべてのスワイプ方向のレイアウトを表すswipeLeft:
というメソッドを示します。私は私が私のUIView
オブジェクトと対話することができたときに遅延を作成してみました、物事の
- (IBAction)swipeLeft:(UISwipeGestureRecognizer *)recognizer {
_oldMove1 = _move1;
_oldMove2 = _move2;
if (recognizer.view == _oneStone
&& recognizer.direction == UISwipeGestureRecognizerDirectionLeft) {
_twoStone.userInteractionEnabled = NO;
_oneStone = recognizer.view;
[self moveOne:CGPointMake(-1, 0) withView:_oneStone];
self.move1++;
// 'causeADelay:' runs _twoStone.userInteractionEnabled = YES;
[self performSelector:@selector(causeADelay:) withObject:_twoStone afterDelay:1];
} else if (recognizer.view == _twoStone
&& recognizer.direction == UISwipeGestureRecognizerDirectionLeft) {
_oneStone.userInteractionEnabled = NO;
_twoStone = recognizer.view;
[self moveTwo:CGPointMake(-1, 0) withView:_twoStone];
self.move2++;
[self performSelector:@selector(causeADelay:) withObject:_oneStone afterDelay:1];
}
self.moveCount++;
}
一つ。これは、半分の時間をおいて相互作用するのを待っている場合にのみ機能しました。完全な遅延が発生し、すべてが機能します。
私はあなたがそれらを同時にスワイプするとバグです。それはスワイプのジェスチャーが付いているからですか?
私はまた、サブビューとしてオブジェクトを削除して再適用しようとしました...明らかに機能しませんでした。私はデッドエンドのゲームを持っていなければ、本当にこれが必要です。私が最初に始めたときにコーディングするのは初めてだったので、Cocos2dやゲーム開発のプラットフォームを考えずに開発しました。
ゲームのポイントと矛盾しますか?各石は1x1(5x5グリッドの正方形のサイズ)です。 5x5グリッド全体にスワイプジェスチャ認識機能が含まれていると、個々のストーンが相互作用するのを防ぐことができますか?または、私はまだ石の一つに触れることに頼ることができますか、それはタッチを受けたその特定の石だったように見える?ありがとう –
_user_は、誰がタッチを検出しているかを知らない。ユーザーには、彼は周りに石を押しているように見えます。タッチを検出した人以外はすべて同じ方法で動作します。見える? – matt
ヒットテストが素晴らしいと思う、それを見て待つことはできません。絶対に(それがまだ何であるかを知らなくても)支払う小さな値段。ありがとう、空白トン! –