在视图之间滑动

Posted

技术标签:

【中文标题】在视图之间滑动【英文标题】:Swiping Between Views 【发布时间】:2011-10-20 02:26:22 【问题描述】:

也许你们可以帮助我。我有三种不同的观点(目前在情节提要中)。我希望用户在三个视图之间滑动而不是单击按钮。是否有一种简单的方法来启用滑动并允许从左到右和从右到左滑动?

我一直在对 Apples Dev 进行一些研究。网站并找到了一些有用的东西,没有什么能真正解释视图之间的切换。

【问题讨论】:

【参考方案1】:

ios中视图切换的一些方法——

    最好使用NavigationViewController 更严格的内存管理。 也可以使用ModalViewControllers。 进行自定义演示。

在所有三个中,第一个虽然更具有记忆力。但是动画视图之间的过渡是困难的。第二个也是如此。第三个为您提供了在视图转换之间提供自定义动画的最大灵活性,但您需要自己真正处理内存管理。

现在回到您的特定问题;这似乎很简单。您可以采取几种方法 -

    有一个巨大的UIScrollView 并只启用水平滚动和分页。现在在此滚动视图中添加您的视图。滑动即可查看新视图。 如果滚动视图不是您想要的并且想要对滑动的发生方式进行更多自定义,那么您可以尝试执行以下操作 -
UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleViewsSwipe:)];
[swipe setDirection:UISwipeGestureRecognizerDirectionLeft];
[yourView addGestureRecognizer:swipe];
[swipe release];

这样,滑动手势在yourView 上定义,如果有人滑动iOS 将点击选择器handleViewsSwipe。您处理用户在此处滑动时发生的情况。

将选择器定义为

- (void)handleViewsSwipe:(UISwipeGestureRecognizer *)gesture

希望这会有所帮助..

【讨论】:

【参考方案2】:

是的,您只需使用 UISwipeGestureRecognizer 来识别左右滑动:

https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UISwipeGestureRecognizer_Class/Reference/Reference.html

如果这对您很重要,您将需要为 pre-iOS 3.2 做一些不同的事情。

视图之间的切换非常简单,您只需构建三个不同的子视图,然后只使您需要的那个可见。还有其他方法可以做到这一点,具体取决于您使用的材料类型——我需要更多信息才能给出更具体的答案。

【讨论】:

【参考方案3】:

您也可以考虑滚动视图。如果您最终可能需要分页,或者如果您将它们用于图像并且您可能需要放大和缩小,这非常有用。

http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/UIScrollView_pg/CreatingBasicScrollViews/CreatingBasicScrollViews.html

【讨论】:

【参考方案4】:

UIPageControl 呢?您可以使用它来检测/控制在页面之间切换的请求,然后使用委托UIControlEventValueChanged 事件来切换视图中的内容。

【讨论】:

以上是关于在视图之间滑动的主要内容,如果未能解决你的问题,请参考以下文章

IOS容器视图在它们之间滑动

在两个 UIViewController 的视图之间滑动

同一视图中平移和滑动手势之间的冲突?

iOS 7:在底部导航栏的表格视图之间滑动

IOS侧滑返回和滑动视图的之间的冲突

Android:在视图/活动/片段之间滑动切换