現在のオブジェクトをでタッチしたいtouchesMoved
。これをtouchLocation(CGPoint)と混同しないでください。ただし、ユーザーが実際に触れているオブジェクトと混同しないでください。を使用UITouch
すると、現在または最新のタッチではなく、常に最初のタッチが返されます(アップルのドキュメントに記載されています)。
3x3から20x20までのスポット(UIImageViews
)のグリッドがあります。
ユーザーが画面上で指をドラッグすると、ユーザーの指を追跡する線が描画されます。ユーザーがグリッドスポットと交差すると、線の始点がそのスポットにスナップし、指を追跡し続けます。基本的に、グリッド上に形状を描画できます。
現在、タッチロケーションがグリッドスポットと交差するかどうかをチェックするforループがあります。これは機能しますが、400グリッドスポットの場合は明らかな理由で非常に遅くなります。
ジェスチャレコグナイザーも試しましたが、これらはタッチをキャンセルします。
どんな助け/アドバイスも大歓迎です、ありがとう!
編集:これは私が私のtouchsMovedに持っているものです。
UITouch* touch = [touches anyObject];
CGPoint touchLocation =[touch locationInView:self];
for (int i=100; i<tagInt; i++) {
UIImageView *img=(UIImageView*)[self.view viewWithTag:i];
if (CGRectContainsPoint(img.frame, touchLocation)) {
//Drawing code setNeedsDisplay etc
}
}