我有一个长而水平,狭窄的UIScrollView
并排包含几个按钮。当用户垂直拖动按钮时,会触发特定方法(通过UIPanGestureRecognizer
),并且滚动视图不会滚动(即使他/她的拖动开始向左或向右)。这一切都很好。
当用户水平拖动滚动视图的任何位置时,包括直接在按钮上,UIPanGestureRecognizer
忽略效果,滚动视图应滚动。这是我遇到麻烦的最后一个效果:当用户直接在按钮上水平拖动时,滚动视图不会滚动。如何将该水平手势“传递”到滚动视图?
感谢阅读!
答案 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