Überprüfen Sie die Richtung des scrollen in UIScrollView

Ich versuche zu implementieren ist die Methode scrollViewWillBeginDragging.
Wenn diese Methode aufgerufen wird ich überprüfen, ob der Benutzer ausgewählt hat, eine der Schaltflächen, die innerhalb der scrollview im Zustand:ausgewählt.
Wenn nicht, dann zeige ich ein UIAlert um den Benutzer zu informieren.

Mein problem ist hier, ich will nur nennen die Schaltfläche ausgewählte (NextQuestion) - Methode, wenn der Benutzer scrollt von rechts nach Links (ziehen der nächsten Ansicht von rechts).
Aber wenn Sie scrollen von Links nach Rechts dann möchte ich es, um zu Blättern, als normal.

Derzeit die checker-Methode aufgerufen wird, egal in welche Richtung der Benutzer führt einen Bildlauf in. Wie kann ich nur eine Methode aufrufen, wenn Sie Blättern Sie von Rechts Nach Links?

Hier ist es, wie ich derzeit umgesetzt:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    [self NextQuestion:scrollView];
}

-(IBAction)NextQuestion:(id)sender
{
    CGFloat pageWidth = scrollView.frame.size.width;
    int page = floor((scrollView.contentOffset.x - pageWidth) / pageWidth) + 1;
    NSInteger npage = 0;
    CGRect frame = scrollView.frame;

    //Check to see if the question has been answered. Call method from another class.
    if([QuestionControl CheckQuestionWasAnswered:page])
    {
        pageNumber++;

        NSLog(@"Proceed");
       if(([loadedQuestionnaire count] - 1) != page)
       {
           [self loadScrollViewWithPage:page - 1];
           [self loadScrollViewWithPage:page];
           [self loadScrollViewWithPage:page + 1];
       }

       //update the scroll view to the appropriate page
       frame = scrollView.frame;
       frame.origin.x = (frame.size.width * page) + frame.size.width;
       frame.origin.y = 0;
       [self.scrollView scrollRectToVisible:frame animated:YES];

   }

   //If question has not been answered show a UIAlert with instructions.
   else
   {
       UIAlertView *alertNotAnswered = [[UIAlertView alloc] initWithTitle:@"Question Not Answered" 
                                                                 message:@"You must answer this question to continue the questionnaire." 
                                                                delegate:nil 
                                                       cancelButtonTitle:@"OK" 
                                                       otherButtonTitles:nil, nil];
       [alertNotAnswered show];
   }
} 

Code für Lösung 1:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    NSLog(@"%f",scrollView.contentOffset.x);
    if (scrollView.contentOffset.x < lastOffset) //has scrolled left..
    {
        lastOffset = scrollView.contentOffset.x;
        [self NextQuestion:scrollView];
    }
}
Haben Sie einen Blick auf diese Antwort: stackoverflow.com/a/4073028/742298

InformationsquelleAutor HGomez90 | 2012-03-09

Schreibe einen Kommentar