Gest pan przeszkadza w przewijaniu

Mam trzy kontrolery widoku, które są częścią UIScrollView. Chcę być w stanie przesuwać między trzema, chociaż jeden z kontrolerów widoku ma narzędzie UIPanGestureRecognizer. Używam tej funkcji rozpoznawania gestu panoramy, aby umożliwić użytkownikowi przeciągnięcie palcem w górę iw dół, aby zwiększyć i zmniejszyć wysokość prostokątnego UIView. Dlatego ten UIPanGestureRecognizer naprawdę musi wiedzieć tylko o panoramowaniu w górę / w dół, a widok przewijania może wykorzystywać panoramowanie poziome.

Przykładem tego jest ekran główny; możesz przesunąć palcem w lewo lub w prawo, ale także przesuń palcem w dół, aby uzyskać reflektor. Chcę tego rodzaju mechanizmu.

To jest mój kod do patelni:

- (void)pan:(UIPanGestureRecognizer *)aPan; // When pan guesture is recognised
{
CGPoint location = [aPan locationInView:self.view]; // Location of finger on screen
CGRect secondRect = CGRectMake(210.0, 45.0, 70.0, 325.0); // Rectangles of maximimum bar area
CGRect minuteRect = CGRectMake(125.0, 45.0, 70.0, 325.0);
CGRect hourRect = CGRectMake(41.0, 45.0, 70.0, 325.0);

if (CGRectContainsPoint(secondRect, location)) { // If finger is inside the 'second' rectangle

    CGPoint currentPoint = [aPan locationInView:self.view];

    currentPoint.y -= 80;  // Make sure animation doesn't go outside the bars' rectangle

    if (currentPoint.y < 0) {
    currentPoint.y = 0;
    }
    else if (currentPoint.y > 239) {
    currentPoint.y = 239;
    }

    currentPoint.y = 239.0 - currentPoint.y;

    CGFloat pointy = currentPoint.y - fmod(currentPoint.y, 4.0);

    [UIView animateWithDuration:0.01f  // Animate the bars to rise as the finger moves up and down
                     animations:^{
                         CGRect oldFrame = secondBar.frame;
                         secondBar.frame = CGRectMake(oldFrame.origin.x, (oldFrame.origin.y - (pointy - secondBar.frame.size.height)), oldFrame.size.width, (pointy));
                     }];

    CGFloat result = secondBar.frame.size.height - fmod(secondBar.frame.size.height, 4.0);

    secondInt = (result / 4.0); // Update labels with new time

    self->secondLabel.text = [NSString stringWithFormat:@"%02d", secondInt];
}

Kod jest w zasadzie powtarzany dla trzech oddzielnych prostokątnych UIViews.

Gdyby ktoś mógł mi powiedzieć, jak uzyskać panoramowanie / przesuwanie ekranu głównego w mojej aplikacji, byłoby świetnie !!

questionAnswers(1)

yourAnswerToTheQuestion