gpt4 book ai didi

iphone - 检查 UIScrollView 中的滚动方向

转载 作者:可可西里 更新时间:2023-11-01 04:07:39 26 4
gpt4 key购买 nike

我正在尝试实现方法scrollViewWillBeginDragging。调用此方法时,我检查用户是否选择了 ScrollView 内的按钮之一处于状态:已选择。如果不是,那么我会显示一个 UIAlert 来通知用户。

我的问题是,如果用户从从右到左滚动(从右侧拉出下一个 View ),我只想调用已选择的按钮 (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];
}
}

最佳答案

scrollViewWillBeginDragging 中, ScrollView 尚未移动(或注册移动),因此 contentOffset 将为 0。从 IOS 5 开始,您可以改为查看 ScrollView 的panGestureRecognizer 确定用户滚动手势的方向和幅度。

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
CGPoint translation = [scrollView.panGestureRecognizer translationInView:scrollView.superview];

if(translation.x > 0)
{
// react to dragging right
} else
{
// react to dragging left
}
}

关于iphone - 检查 UIScrollView 中的滚动方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9637203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com