XCodeの - touchesBegan - 最近タッチ/新タッチ
-
26-09-2019 - |
質問
私はタッチを使用しているなど、多くの8とタッチを追跡するために始めた、とそれぞれがイベントをトリガします。これらのタッチが同時に発生し、あるいは千鳥ことができます。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"Touch Began");
NSSet *allTouches = [event allTouches];
for (int i=0; i<allTouches.count; i++) {
UITouch *touch = [[allTouches allObjects] objectAtIndex:i];
if (/*touch inside button in question*/) {
//Trigger the event.
}
}
}
このコードは、マルチタッチのために働く、それは問題がない、EXCEPT:(あなたが推測することができます参照してください)。
によりallTouches作品ウェイに、それは文字通りタッチのすべてを取得します。ユーザーが別のタッチを開始し、これにより二回のボタンのいずれかのイベントをトリガしたときにこのため、それは現在アクティブなタッチのすべてをループします。
例:ジョニーは、ボタン1イベント1が発生押しています。ジョニーは、ボタン1上に自分の指を残して、プレスボタン2.イベント2が発生しますが、ボタン1はまだallTouchesの一部であり、そのため、イベント1が再びトリガされます。
だからここに質問です:?私は新しいタッチを取得するにはどうすればよいですが、
解決
同じタッチオブジェクトは、任意の連続touch用のtouchesBeganへの以降の呼び出しで返されます。だからセーブで各UITouch *あなたは既に始まって(まだ終わっていない)として扱われ、タッチしたことを、あなた反復touchesBegan内の次の時間は、あなたがそのように保存したものを飛ばして/マークされます。
所属していません StackOverflow