カスタム ジェスチャ レコグナイザーを作成しています。私の目標は、ジェスチャの間、特定のしきい値を超える動きをログに記録し、ジェスチャの最後にそのデータ セットを報告することです。ジェスチャ認識オブジェクトが果たす役割について、私は少し曖昧です。
私はまだ OOP に少し慣れていないので、このジェスチャ認識エンジンを使用した MVC のベスト プラクティスについて疑問に思っています。具体的には、ジェスチャ レコグナイザは「ダム」でビュー コントローラにのみ移動を報告し、VC でロジックとロギングを実行する必要があります。ジェスチャが終了したらレポートを返し、VC がジェスチャ認識エンジンにデータを要求するようにします。
これは、私が現在プロトタイプを作成しているもののサンプルコードです (ロジックを持ち、ジェスチャ認識エンジンにログインするというアプローチを使用):
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesMoved:touches withEvent:event];
if (self.state == UIGestureRecognizerStateFailed) return;
CGPoint nowPoint = [[touches anyObject] locationInView:self.view];
int xMovement = nowPoint.x - self.previousPoint.x;
int yMovement = nowPoint.y - self.previousPoint.y;
if (xMovement >= 0) {
// positive/no x movement, log points if x or y has movement above threshold
if (xMovement > MovementThreshold || yMovement > MovementThreshold) {
NSLog(@"Movement above the threshold!\nx: %f\ty: %f", nowPoint.x, nowPoint.y);
self.previousPoint = nowPoint;
}
} else {
// negative x movement
self.state = UIGestureRecognizerStateFailed;
}
}