11

W tej chwili mój UIPanGestureRecognizer rozpoznaje każdą pojedynczą panoramę, co jest świetne i konieczne, ale ponieważ używam jej jako gestu ślizgowego do zwiększania i zmniejszania wartości zmiennej, w ramach tej metody chcę działać tylko tak często. Jeśli zwiększam o 1 za każdym razem, gdy zostanie wykryty, wartość wzrasta zbyt szybko.Z UIPanGestureRecognizer, czy istnieje sposób, aby działać tak często, jak po tym, jak wiele pikseli zostało przesuniętych?

Czy istnieje sposób, aby zrobić coś takiego, co każde 10 pikseli panoramy czy coś podobnego?

+1

Myślę, że chcesz ustawić zmienną na podstawie tego, jak daleko użytkownik przesunie, a nie raz na wiadomość. –

+0

Przypominamy, że translationInView podaje odległość ** OD STARTU ** patelni, więc jest absolutnie łatwa w użyciu - dokładnie tak, jak przy użyciu suwaka. – Fattie

Odpowiedz

18

Poszukujesz translationInView:, która mówi, jak daleko posuwa się patelnia i może być przetestowana pod kątem minimalnej odległości. To rozwiązanie nie obejmuje przypadku, w którym poruszasz się w jednym kierunku w ilości równej minimalnej odległości, ale jeśli jest to ważne dla twojego scenariusza, nie jest to trudne.

#define kMinimumPanDistance 100.0f 

UIPanGestureRecognizer *recognizer; 
CGPoint lastRecognizedInterval; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(didRecognizePan:)]; 
    [self.view addGestureRecognizer:recognizer]; 
} 

- (void)didRecognizePan:(UIPanGestureRecognizer*)sender { 
    CGPoint thisInterval = [recognizer translationInView:self.view]; 

    if (abs(lastRecognizedInterval.x - thisInterval.x) > kMinimumPanDistance || 
     abs(lastRecognizedInterval.y - thisInterval.y) > kMinimumPanDistance) { 

     lastRecognizedInterval = thisInterval; 

     // you would add your method call here 
    } 
} 
+0

Należy również zauważyć, że translationInView podaje odległość ** OD STARTU PAN **. (To nie jest odległość od "najnowszej sekcji".) Wyznaczenie wartości opartej na panoramowaniu jest niezwykle łatwe. W rzeczywistości jest dokładnie tak, jak przy użyciu suwaka **. To jedna linia kodu .. yourValue = [sender translationInView: self.view] .x; i to wszystko. – Fattie

Powiązane problemy