是否可以在按钮上启动滚动视图平移手势

Posted

技术标签:

【中文标题】是否可以在按钮上启动滚动视图平移手势【英文标题】:Is it possible to start scrollView pan gesture on a button 【发布时间】:2015-02-25 23:21:50 【问题描述】:

我有这样的层次结构

- UIView 
   - UITableView
   - UIButton

默认情况下,从 UIButton 滑动不会滚动滚动视图。我想改变它。

我可以通过将UIButton 更改为UILabel 并添加UITapGestureRecogniser 来有效地制作自定义按钮。

有没有办法让它保持为 UIButton?

【问题讨论】:

按钮的层次结构是什么?它是单元格的子视图吗? ui表视图?导航栏? @YuchenZhong - 按钮是 tableView 的兄弟。生病补充我的问题。 我们最近遇到了一个非常相似的问题。我们有一个地图视图(滚动视图)和一个UIbutton。我们想让用户从按钮开始平移地图,并使按钮仅响应TouchUpInside 事件。但是,似乎使用UITapGestureRecogniser 是实现这一目标的唯一方法。 【参考方案1】:
-(void)moveUpView
    
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:n inSection:0];
    [self.tableView scrollToRowAtIndexPath:indexPath      atScrollPosition:UITableViewScrollPositionTop
                                animated:YES];
        

希望这可以工作

【讨论】:

我已经在我的视图上对此进行了测试,它是简单的视图,如注册屏幕,尚未在 Tableview 上进行测试。告诉我它是否也适用于 tableview..! 这不会只是将 UITableView 向上移动吗?您不想修改 contentOffset 而不是视图的框架吗? 如果我错了,请纠正我,你真的是滚动按钮来滚动 Tableview 吗?? 嗨,魔法师。感谢您的回答,但这不是我所追求的。我希望滚动视图正常工作,但是在按钮处启动时它的平移手势不起作用。【参考方案2】:

创建一个重复的UITableView(具有相同的dataSourcedelegate),但不要将其插入到视图层次结构中的任何位置;只需将其panGestureRecognizer 添加到UIButton。实现其委托-scrollViewDidScroll: 方法,将原始UITableViewcontentOffset 设置为重复的UITableView

【讨论】:

以上是关于是否可以在按钮上启动滚动视图平移手势的主要内容,如果未能解决你的问题,请参考以下文章

当从视图启用滚动时,SWRevealViewController 平移手势不起作用

UIScrollview 子视图在缩放后无法识别平移手势

如何将平移手势从滚动视图转发到另一个滚动视图

基于平移手势翻译的滚动scrollview

滚动视图中基于平移手势的移动视图控制器

滚动视图平移防止捏手势?