UIScrollView传递拖动到主视图

时间:2014-06-09 01:18:57

标签: ios uiscrollview uigesturerecognizer uipageviewcontroller

我有下一个麻烦,希望你能给我建议处理它。

我有页面控制器w /垂直滚动。在页面视图里面我使用了一些组件,其中一个是UIScrollView。为了在页面之间滚动,我应该拖动除了这个UIScrollView之外的任何内容,因为ScrollView会捕获任何事件并阻止页面控制器获取它们。

所以我的问题是,如何从UIScrollView将拖拽事件传递给UIPageControllerView。

例如,当UISCrollView的滚动内容到达顶部时,它会通过拖动,因此页面控制器可以更改页面。反之亦然,如果到达UIScrollView内容的末尾,则下一次拖动由PageController处理以更改页面。

任何建议表示赞赏。 感谢。

1 个答案:

答案 0 :(得分:0)

你想要什么听起来非常像拉动刷新技术,在那里你下拉页面来获取最新的推文/ Facebook帖子/柠檬派食谱/无论如何。您希望该事件触发segue到新页面,而不是刷新。默认内置的一个只适用于UITableView,但有很多库可以让你使用UIScrollView。这是一个例子:

http://mt.gomiso.com/2012/03/22/yet-another-pull-to-refresh-library/

你可以把它们拆开看看或按原样使用它们,我无法准确地确定你想要的是什么。


此外,您可以尝试进一步深入了解以下UIScrollView方法:

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;

然后看看contentOffset在那一点上有什么值。

现在,如果你想在UIPageViewController中查看scrollview的功能,可以在UIPageViewController上实现UIScrollViewDelegate协议,并将该viewcontroller设置为UIScrollView的委托:

https://developer.apple.com/library/ios/documentation/uikit/reference/uiscrollviewdelegate_protocol/reference/uiscrollviewdelegate.html

代码看起来有点像这样:

·H:

@interface ViewController : UIPageViewController<UIScrollViewDelegate>

@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
// The rest of your properties

@end

的.m:

- (void)viewDidLoad;
{
    // Tell the scrollView you want to be the delegate for it
    self.scrollView.delegate = self;
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
{
    // read self.scrollView.contentOffset and see if it has been pulled out of bounds
    // If it is, do a segue
}