我正在编写这个应用程序,这是一个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
被取消了。我的假设有多准确?
有没有更好的方法解决这个问题?
答案 0 :(得分:2)
如果您正在禁用滚动,那么您可能不想使用UIScrollView:)
当检测到滑动时,我会在正常UIView(使用UIView's animation methods)内的下一张卡上制作动画。
答案 1 :(得分:0)
我认为没有任何名为UISwipeView
的内容,但这只是旁注。
如果您拥有固定数量的卡,则可以轻松使用启用了分页的UIScrollView
。
编辑:即使您有太多卡片可供此类解决方案使用,您仍然可以使用启用了分页的UIScrollView
。但是,这需要更多的工作。
编辑2:我刚才意识到在回答之前我没有正确地阅读你的问题。我不明白为什么你不想使用分页。我认为分页为用户提供了更好的反馈,而不仅仅是即时切换卡片。