滚动时如何折叠UITableView标头

时间:2018-02-08 17:32:05

标签: ios swift uitableview

我想要实现的功能在Twitter here中显示。

我一直在网上查看几个资源,包括密歇根实验室的这个article,这对于通过在UITableView

之上的标题视图上使用约束来获取折叠动画非常有用

我用这种方法看到的问题是,因为它在技术上不是UITableView的一部分,所以标题不会响应向上/向下滚动手势。但是,当我下载Twitter应用程序时,标题会响应触摸。如何使标题对触摸手势敏感?

总结:我想复制那个显示配置文件图片,关注者,按钮和分段控件的中间部分,它们会折叠,直到只显示分段控件。

1 个答案:

答案 0 :(得分:1)

滚动视图会显示它的手势处理程序,因此您只需将其添加到视图中即可。

view.addGestureRecognizer(scrollView.panGestureRecognizer)

此外,由于标题似乎位于表格视图中,因此您可以清除标题视图的userInteractionEnabled,它会将手势发送到基础视图。

编辑: 由于手势一次只能属于一个视图,我建议使用此方法。覆盖UIView上的hittest低级方法,以将事件引导到正确的视图。在标题视图上实现它,并始终返回表视图。您可以将表视图添加为标题视图中的属性,并将其设置为viewDidLoad

override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? {
    if self.pointInside(point, withEvent: event)
        return self.tableView
    return nil;
 }

(下面的Objective-C版本)

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    if ([self pointInside:point withEvent:event])
        return _nextView;
    return nil;
}