如何有条不紊地“通过”手势从UIButton到UIScrollView?

时间:2013-11-07 12:20:44

标签: ios uiscrollview

我有一个长而水平,狭窄的UIScrollView并排包含几个按钮。当用户垂直拖动按钮时,会触发特定方法(通过UIPanGestureRecognizer),并且滚动视图不会滚动(即使他/她的拖动开始向左或向右)。这一切都很好。

当用户水平拖动滚动视图的任何位置时,包括直接在按钮上,UIPanGestureRecognizer忽略效果,滚动视图应滚动。这是我遇到麻烦的最后一个效果:当用户直接在按钮上水平拖动时,滚动视图不会滚动。如何将该水平手势“传递”到滚动视图?

感谢阅读!

3 个答案:

答案 0 :(得分:1)

将此方法添加到按钮的UIPanGestureRecognizer的委托:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return (otherGestureRecognizer == _scrollView.panGestureRecognizer);
}

答案 1 :(得分:1)

在UIScrollView上,您可以覆盖

- (BOOL)touchesShouldCancelInContentView:(UIView *)view

子类UIScrollView(或UITableView)并返回YES。滚动开始时,它将取消子视图的任何触摸。

答案 2 :(得分:0)

考虑UILongPressGestureRecognizer。这可能会对您有所帮助:Combine longpress gesture and drag gesture together