我有两个嵌套的UIScrollViews:父级限于水平分页,孩子限于垂直滚动。内容是一个可以自由拖拽的大视图,但会捕捉到三个水平部分之一。嵌套滚动视图的默认行为是只允许一次向一个方向滚动,但我希望允许同时拖动两个方向以保持操纵单个大视图的感觉。嵌套的UIScrollViews同时滚动
我的本解决方案涉及分离的垂直滚动视图的姿势和它的代表设置为我的视图控制器:
for (UIGestureRecognizer *gesture in scrollView.gestureRecognizers)
if ([gesture isKindOfClass:[UIPanGestureRecognizer class]])
gesture.delegate = self;
然后,我实现委托方法,以允许寻呼视图的手势来与同时识别滚动视图的平移手势:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
if (gestureRecognizer.view == scrollView && otherGestureRecognizer.view == pageView)
return YES; // allow simultaneous scrolling of pageView and scrollView
return NO;
}
该解决方案主要是作品,但它偶尔会充当出问题,当我拖动周围景观,尤其是当我用鼠标周围快速移动,或拖动它周围的过去视图范围。具体来说,其中一个滚动视图会暂时跳回到开始位置,就好像该手势已被取消一样,但如果我继续滚动,则会跳回。
我想知道的是,如果有一种更简单或更可靠的方法来实现像我一样忽略的滚动,或者如果有什么我可以做,以消除这种不良行为。
我已经做了类似的事情,我想你,它的作品完美。你是否试图基本上有一个大面积滚动左右不断地有顶部和左侧区域告诉用户他们在哪里? – Rudiger 2010-10-12 22:00:01
不完全;我所展示的是一款MMO游戏中的三种天赋树。我不想将每棵树当作一个独立的页面,而是希望允许自由地拖动视图,但是在释放拖动时让它锁定在其中一棵树上。我见过其他使用类似行为的应用,特别是显示该游戏天赋树的WoW Armory应用。 – trevorsm 2010-10-12 23:03:11
好的,小姐理解,如果我想到一些东西,我会稍后回顾 – Rudiger 2010-10-12 23:30:57