Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何实现与在iPhone上的家庭屏幕之间导航相同的平移/滑动效果组合?_Ios_Ios5_Uigesturerecognizer_Uipangesturerecognizer_Uiswipegesturerecognizer - Fatal编程技术网

Ios 如何实现与在iPhone上的家庭屏幕之间导航相同的平移/滑动效果组合?

Ios 如何实现与在iPhone上的家庭屏幕之间导航相同的平移/滑动效果组合?,ios,ios5,uigesturerecognizer,uipangesturerecognizer,uiswipegesturerecognizer,Ios,Ios5,Uigesturerecognizer,Uipangesturerecognizer,Uiswipegesturerecognizer,在iPhone上,您可以通过三种不同的方式在不同的主屏幕之间切换 您可以向左或向右滑动,下一个屏幕将分别设置动画 触摸屏幕时,不用抬起手指即可将屏幕向右或向左拖动。通过临界点后(距离超过屏幕一半),当您抬起手指时,下一个主屏幕将设置动画 你触摸屏幕,不需要抬起手指就可以稍微拖动屏幕,如果你愿意,你可以停止拖动,但仍然不要离开手指。您可以在相对较短的距离内向左或向右加速,它将在左侧或右侧的相应屏幕上设置动画 如果我们只看第1点和第2点,我们会发现它们很难实现。它只是点1的一个识别器。和一个维吾尔语

在iPhone上,您可以通过三种不同的方式在不同的主屏幕之间切换

您可以向左或向右滑动,下一个屏幕将分别设置动画

触摸屏幕时,不用抬起手指即可将屏幕向右或向左拖动。通过临界点后(距离超过屏幕一半),当您抬起手指时,下一个主屏幕将设置动画

你触摸屏幕,不需要抬起手指就可以稍微拖动屏幕,如果你愿意,你可以停止拖动,但仍然不要离开手指。您可以在相对较短的距离内向左或向右加速,它将在左侧或右侧的相应屏幕上设置动画

如果我们只看第1点和第2点,我们会发现它们很难实现。它只是点1的一个识别器。和一个维吾尔语识别器

将1和2组合起来似乎不是那么简单,因为刷卡似乎占主导地位,我尝试将它们与-voidRequiremeTestureRecognitzerToFail:uigestureRecognitzer*OthergestureRecognitzer组合起来。要触发平底锅,我必须将手指放在屏幕上,非常软地拖动,以避免触发滑动

更不用说第三点作为补充了。这似乎完全不符合我的知识状态


有什么建议吗?事先非常感谢。如果需要更多信息来解决这个问题,我很乐意提供。

主屏幕只是一个带有UIPageControl的UIScrollView 就这么简单:

例如:

// MyViewController.h
@interface MyViewController : UIViewController <UIScrollViewDelegate> {
    UIScrollView *_scrollView;
    UIPageControl *_pageControl;
}

// MyViewController.m
// in your viewDidLoad method
int numberOfPages = 3;
_scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,
                                                                 self.view.frame.size.height)];
 [_scrollView setContentSize:CGSizeMake(numberOfPages*_scrollView.frame.size.width, _scrollView.frame.size.height)];
 [_scrollView setPagingEnabled:YES];
 [_scrollView setShowsHorizontalScrollIndicator:NO];
 [_scrollView setDelegate:self];
 [self.view addSubview:_scrollView];

 _pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, _scrollView.frame.size.height-30, _scrollView.frame.size.width, 20)];
 [_pageControl setNumberOfPages:numberOfPages];
 [_pageControl setCurrentPage:0];
 [self.view addSubview:_pageControl];

for (int i=0; i<numberOfPages; i++) {
   CGRect frame = _scrollView.frame;
   frame.origin.x = frame.size.width * i;
   frame.origin.y = 0;
   UIView *view = [UIView alloc] initWithFrame:frame];
   //Setup your view     
   [_scrollView addSubview:view];
}

这只是一个例子,向你展示你能做什么。如果您使用的是数据库,或者每个视图都不同,您应该以不同的方式设置视图或检索数据,但逻辑是相同的…

主屏幕只是一个带有UIPageControl的UIScrollView 就这么简单:

例如:

// MyViewController.h
@interface MyViewController : UIViewController <UIScrollViewDelegate> {
    UIScrollView *_scrollView;
    UIPageControl *_pageControl;
}

// MyViewController.m
// in your viewDidLoad method
int numberOfPages = 3;
_scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,
                                                                 self.view.frame.size.height)];
 [_scrollView setContentSize:CGSizeMake(numberOfPages*_scrollView.frame.size.width, _scrollView.frame.size.height)];
 [_scrollView setPagingEnabled:YES];
 [_scrollView setShowsHorizontalScrollIndicator:NO];
 [_scrollView setDelegate:self];
 [self.view addSubview:_scrollView];

 _pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, _scrollView.frame.size.height-30, _scrollView.frame.size.width, 20)];
 [_pageControl setNumberOfPages:numberOfPages];
 [_pageControl setCurrentPage:0];
 [self.view addSubview:_pageControl];

for (int i=0; i<numberOfPages; i++) {
   CGRect frame = _scrollView.frame;
   frame.origin.x = frame.size.width * i;
   frame.origin.y = 0;
   UIView *view = [UIView alloc] initWithFrame:frame];
   //Setup your view     
   [_scrollView addSubview:view];
}
这只是一个例子,向你展示你能做什么。如果您使用的是数据库,或者每个视图都不同,您应该以不同的方式设置视图或检索数据,但逻辑是相同的

查看如何通过滚动视图增强用户体验 查看高级滚动视图技术 查看如何通过滚动视图增强用户体验 查看高级滚动视图技术
首先感谢您的快速回复。我应该在这个问题上补充更多的信息。不使用UIPageControl是否可以实现此行为?我的视图显示数据库中的文本数据。向右/向左平移/滑动将产生下一个/最后一个数据文本。因此,它实际上不是一个页面,而是用户可以浏览的数千个视图之一。这些视图被重用了——实际上我只有三个UIView。一个在左边,一个在右边,一个在中间。就是这样,你可以用UIScrollView+UIPageControl来实现。我将编辑我的答案,向大家展示一个例子。在WWDC 2010和2011的滚动视图视频中也有一些很好的例子,我认为在2012年,他们可能已经更新了演示,使用了集合视图,如果你需要iOS 6,这绝对是一种方式。谢谢你,@ZevEisenberg。如果你手头有一个链接的话,能不能提供一个链接?我的应用程序必须在ios5和ios6上运行,所以不幸的是,我不能只依赖ios6的功能。首先,感谢您的快速回复。我应该在这个问题上补充更多的信息。不使用UIPageControl是否可以实现此行为?我的视图显示数据库中的文本数据。向右/向左平移/滑动将产生下一个/最后一个数据文本。因此,它实际上不是一个页面,而是用户可以浏览的数千个视图之一。这些视图被重用了——实际上我只有三个UIView。一个在左边,一个在右边,一个在中间。就是这样,你可以用UIScrollView+UIPageControl来实现。我将编辑我的答案,向大家展示一个例子。在WWDC 2010和2011的滚动视图视频中也有一些很好的例子,我认为在2012年,他们可能已经更新了演示,使用了集合视图,如果你需要iOS 6,这绝对是一种方式。谢谢你,@ZevEisenberg。如果你手头有一个链接的话,能不能提供一个链接?我的应用程序必须在ios5和ios6上运行,所以不幸的是,我不能只依赖ios6的功能。