关于UIScrollView嵌套UITableView冲突问题

scrollview 嵌套tableview 会导致手势冲突这在苹果官方文档已声明。我也做了尝试(本例是tableview作为列加入到scrollview中,如下图),发现用一个scrollview作为控制器的view时,滑动手势无法识别。但做了一次另外的有趣尝试发现,如果将tableview的父视图scrollview作为一个子视图插入到控制器的view中时,竟然可以识别毫无影响!!!在进一步测试发现,scrollview的宽度至少要小于他的父视图2px,才能不导致手势冲突,否则,即比如scrollview的宽度和view的宽度相同,仍然会冲突。分析了半天也没有头绪,看看大家有何看法。另外我还发现更有趣的困惑相信,由于无法用言语表达,在这里不做论述了。大家一起讨论下哈!我想这是很多人关注的问题,刚才还看到有人提问,额。




问题由来:项目需要做类似网易新闻的那种UIScrollView上放多个UITableView的效果,其中UITableView还要有下拉刷新效果。


一开始的思路,也是最直观的思路就是一个UIScrollView上放多个UITableView,然后发现UITableView的滑动和UIScrollView的滑动产生冲突,用户体验不好。主要原因在于UIScrollView的滑动原理。


基础知识看这里:

http://snorlax.sinaapp.com/?p=178

http://www.devdiv.com/forum.php?mod=viewthread&tid=197496

总结这两篇,问题在于如果想让UITableView可以下拉,并且显示下拉刷新组件,那么就不能让UIScrollView滚动(scrollEnabled=NO),如果想左右滑动显示并列的其他UITableView,那么就需要让UIScrollView可以滚动,但是,怎么知道用户想如何操作?所以此路不通。(即使可以滑动,但效果远远达不到产品需求)



与是就有了下面的想法:用一个UITableView作为背景,但这个UITableView仅有一个cell,然后在这个cell上放一个横着的UITableView,然后在这个横着的UITableView上放N个View,这样也达到了“UIScrollView上放多个UITableView的效果”。


上代码:


背景UITableView:

  1. //实现Table  
  2. CGRect scrollRect = CGRectMake(0, 0, 320, 460);  
  3. self.tableBgScroll = [[[UITableView alloc] initWithFrame:scrollRect style:UITableViewStylePlain] autorelease];  
  4. [self.tableBgScroll setDelegate:self];  
  5. [self.tableBgScroll setDataSource:self];  
  6.   
  7. //Table的数据源方法  
  8. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  
  9. {  
  10.     return 1;  
  11. }  
  12.   
  13. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  14. {  
  15.     static NSString *cellname = @"cell";  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值