【问题标题】:How to pass touch events from one view to another如何将触摸事件从一个视图传递到另一个视图
【发布时间】:2014-02-07 22:04:30
【问题描述】:

我有一个UIScrollView 和一个UIView 子视图,它有一个UITableView 子视图。我想要的是当用户在UITableView 上滚动时容器滚动视图滚动。有没有办法将孩子UIScrollView的触摸事件传递给容器UIScrollView?谢谢你的帮助。这是滚动视图的代码。父滚动视图在代码中创建,子视图在IB中创建。

CGFloat offset = ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0) ? 64.0 : 44.0;
self.parentScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0, offset, 320.0, self.view.frame.size.height - offset)];
self.parentScrollView.delegate = self;
self.parentScrollView.bounces = NO;
self.parentScrollView.contentInset = UIEdgeInsetsMake(self.header.frame.size.height - offset, 0, 0, 0);
self.parentScrollView.delaysContentTouches = NO;
[self.view addSubview:self.parentScrollView];

[self.contentView.tableView registerNib:[UINib nibWithNibName:@"PodcastCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"PodcastCell"];
[self.contentView.tableView registerNib:[UINib nibWithNibName:@"DescriptionCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"DescriptionCell"];
self.contentView.delegate = self;
self.contentView.tableView.delegate = self;
self.contentView.tableView.dataSource = self;
[self.parentScrollView addSubview:self.contentView];
self.parentScrollView.contentSize = CGSizeMake(320.0, self.contentView.frame.size.height);

对不起,我没有很好地解释这一点。我需要父UIScrollView 滚动直到子UITableView 到达父的顶部,此时父UIScrollView 应该停止滚动,而子UItableView 应该开始滚动。这有意义吗?

【问题讨论】:

    标签: objective-c uiscrollview uiresponder


    【解决方案1】:

    在您的UITableView 中实现scrollViewDidScroll:,计算contentOffset,然后从您的容器视图中调用setContentOffset:animated:

    【讨论】:

      猜你喜欢
      • 2017-01-26
      • 1970-01-01
      • 2014-06-06
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      相关资源
      最近更新 更多