Я пытаюсь реализовать метод scrollViewWillBeginDragging. Когда этот метод вызывается, я проверяю, что пользователь выбрал одну из кнопок, находящихся в пределах прокрутки, в состоянии: выбрано. Если нет, тогда я показываю UIAlert, чтобы информировать пользователя.Проверить направление прокрутки в UIScrollView
Моя проблема здесь я только хочу, чтобы вызвать выбранную кнопку (NextQuestion) метод, если пользователь прокручивает от справа налево (вытягивать следующий вид справа). Но если они прокручиваются от Слева направо, тогда я хочу, чтобы он прокручивался как обычно.
В настоящее время метод проверки называется независимо от того, в каком направлении прокручивается пользователь. Как я могу вызвать метод только при прокрутке от Право на левый?
Вот как я уже в настоящее время реализуется его:
- (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];
}
}
Код для решения 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];
}
}
Посмотрите на этот ответ: http://stackoverflow.com/a/4073028/742298 –