我正在创建一个自定义手势识别器,我的目标是在手势持续时间内记录高于某个阈值的移动,然后在手势结束时报告该数据集。我对手势识别器对象所扮演的角色有点模糊。
由于我对 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;
}
}