Как я могу получить смещение касания при использовании UITouch
? Я делаю проект, как пульт дистанционного управления. У меня есть представление, настроенное на мультитач, и я хочу, чтобы представление действовало как сенсорная панель для Mac, поэтому мне нужно смещение касания, когда люди перемещаются для управления мышью. Любые идеи?
Как я могу получить смещение касания при использовании UITouch
Ответы (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