iOS Настройка отклонения движения для распознавателя жестов

63
5

Есть ли способ гарантировать, что любой отвод, который содержит больше, чем некоторое количество движения, будет отброшен? Как бы то ни было, то, что считается краном, может привести к скольжению пальца. Я хотел бы обработать "коснуться и двигаться" по-разному, используя touchhesBegan :, touchesMoved :, и т.д.

спросил(а) 2021-01-25T17:46:31+03:00 4 месяца, 3 недели назад
1
Решение
99

Вероятно, это не тот ответ, который вы ищете. Но я работал над этим, делая это сам в обычной последовательности штрихов. Чтобы это сработало, вы также хотели бы иметь self.multipleTouchEnabled = NO

@interface myView(){
CGPoint _touchStartPoint;
}
@end

@implementation myView

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
_touchStartPoint = [[touches anyObject] locationInView:self];
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
[self checkDistance: [[touches anyObject] locationInView:self]];
}

-(void)checkDistance:(CGPoint)p{

static CGFloat dX;
dX = p.x - _touchStartPoint.x;

static CGFloat dY;
dY = p.y - _touchStartPoint.y;

static CGFloat dist;
dist = sqrt(dX*dX + dY*dY);

/* movement of less than 10 pixels */
if(dist < 10){
[self tap];
}
}

-(void)tap{
/* do something with your tap*/
}

@end

ответил(а) 2021-01-25T17:46:31+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема