Как я могу получить смещение касания при использовании UITouch

Как я могу получить смещение касания при использовании UITouch? Я делаю проект, как пульт дистанционного управления. У меня есть представление, настроенное на мультитач, и я хочу, чтобы представление действовало как сенсорная панель для Mac, поэтому мне нужно смещение касания, когда люди перемещаются для управления мышью. Любые идеи?


person Jerry Zhu    schedule 16.08.2012    source источник


Ответы (1)


Этого можно добиться с помощью UIPanGestureRecognizer, измерив расстояние по диагонали от центра экрана до текущего места касания.

#import <QuartzCore/QuartzCore.h>

Объявите жест и привяжите его к self.view, чтобы весь экран реагировал на события касания.

UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(myPanRecognizerMethod:)];
[pan setDelegate:self];
[pan setMaximumNumberOfTouches:2];
[pan setMinimumNumberOfTouches:1];
[self.view setUserInteractionEnabled:YES];
[self.view addGestureRecognizer:pan];

Затем в этом методе мы используем состояние распознавателей жестов: UIGestureRecognizerStateChanged для обновления и целое число, которое измеряет диагональное расстояние между местом касания и центром экрана при изменении положения касания.

-(void)myPanRecognizerMethod:(id)sender
{
    [[[(UITapGestureRecognizer*)sender view] layer] removeAllAnimations];
    if ([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateChanged) {
        CGPoint touchLocation = [sender locationOfTouch:0 inView:self.view];
        NSNumber *distanceToTouchLocation = @(sqrtf(fabsf(powf(self.view.center.x - touchLocation.x, 2) + powf(self.view.center.y - touchLocation.y, 2))));
        NSLog(@"Distance from center screen to touch location is == %@",distanceToTouchLocation);
    }
}
person Mick MacCallum    schedule 16.08.2012