我有下一个麻烦,希望你能给我建议处理它。
我有页面控制器w /垂直滚动。在页面视图里面我使用了一些组件,其中一个是UIScrollView。为了在页面之间滚动,我应该拖动除了这个UIScrollView之外的任何内容,因为ScrollView会捕获任何事件并阻止页面控制器获取它们。
所以我的问题是,如何从UIScrollView将拖拽事件传递给UIPageControllerView。
例如,当UISCrollView的滚动内容到达顶部时,它会通过拖动,因此页面控制器可以更改页面。反之亦然,如果到达UIScrollView内容的末尾,则下一次拖动由PageController处理以更改页面。
任何建议表示赞赏。 感谢。
答案 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的委托:
代码看起来有点像这样:
·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
}