使用UIScrollView即时滑动

时间:2011-05-04 08:40:47

标签: iphone uiscrollview

我正在编写这个应用程序,这是一个flashcard应用程序,我想创建一个用户界面,当用户进行水平滑动时,显示一个不同的卡名称页面。 我提出这个想法使用UIScrollView,但问题是我希望滚动视图在刷卡发生时立即显示下一页,即使我要打开它的分页也应该被刷到至少一半的视图大小才能触发,这里尝试了两种不同的方法:

首先我禁用UIScrollView的滚动(使用scrolEnabled),这样它就会将滑动事件传递给响应者链,然后将右滑动手势识别器添加到相应的视图中。这种方法的问题在于手势识别器通常无法报告滑动事件。

我尝试的第二件事是使用委托方法

- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
    static CGFloat lastScrollOffset;
    static BOOL hasScrolled;

    if (lastScrollOffset > theScrollView.contentOffset.x && !hasScrolled){
        NSLog(@"left Swipe");
        [theScrollView scrollRectToVisible:CGRectMake(0, 0, 320, 480) animated:YES];
        if (theScrollView.contentOffset.x == 320) 
            hasScrolled = NO;
        hasScrolled = YES;
    }
    if (lastScrollOffset < theScrollView.contentOffset.x && !hasScrolled){
        NSLog(@"right Swipe");
        [theScrollView scrollRectToVisible:CGRectMake(320, 0, 320, 480) animated:YES];
        if (theScrollView.contentOffset.x == 0) 
            hasScrolled = NO;
        hasScrolled = YES;
    }
    lastScrollOffset = theScrollView.contentOffset.x;
}

无效。

当发生另一次触摸时,我注意到scrollRectToVisble被取消了。我的假设有多准确?

有没有更好的方法解决这个问题?

2 个答案:

答案 0 :(得分:2)

如果您正在禁用滚动,那么您可能不想使用UIScrollView:)

当检测到滑动时,我会在正常UIView(使用UIView's animation methods)内的下一张卡上制作动画。

答案 1 :(得分:0)

我认为没有任何名为UISwipeView的内容,但这只是旁注。

如果您拥有固定数量的卡,则可以轻松使用启用了分页的UIScrollView

编辑:即使您有太多卡片可供此类解决方案使用,您仍然可以使用启用了分页的UIScrollView。但是,这需要更多的工作。

编辑2:我刚才意识到在回答之前我没有正确地阅读你的问题。我不明白为什么你不想使用分页。我认为分页为用户提供了更好的反馈,而不仅仅是即时切换卡片。