2014-04-04 37 views
3

我已将UITableView添加为子视图UITableviewCell。 在iOS 6中,当我滚动内部tableView并达到其结束时,主表视图变为滚动。 在iOS 7中,它不再工作。如果我在内部表格视图中滚动,它不会将此滚动事件传递给父级表视图。在UITableviewCell中嵌入的UITableView中滚动(ios7)

有谁知道如何简单地修复它,没有手动从内部tableview到父级传输事件?

附加信息: 我找到可能的原因problem。但是如何解决这个问题。

+1

你为什么要这样做?不建议在TableViewCell中添加TableView。 –

+0

我需要显示不适合单元格大小的内容。 – abagmut

+0

您是否尝试过使用UICollectionView而不是UITableView? – Abizern

回答

3

所以,我找到了一个解决方案。

据@FaisalAli的提示,我实现的委托方法:

- (BOOL)       gestureRecognizer: (UIGestureRecognizer*)gestureRecognizer 
shouldRecognizeSimultaneouslyWithGestureRecognizer: (UIGestureRecognizer*)otherGestureRecognizer 
{ 
    if ([gestureRecognizer isKindOfClass: [UIPanGestureRecognizer class]]) 
    { 
     if ([((UIPanGestureRecognizer*)gestureRecognizer) velocityInView: self].y > 0) 
     { 
      // Up 
      if (self.contentOffset.y <= 0) 
      { 
       self.bounces = NO; 
       return YES; 
      } 
     } 
     else 
     { 
      // Down 
      if (self.contentOffset.y + self.height >= self.contentSize.height) 
      { 
       self.bounces = NO; 
       return YES; 
      } 
     } 
    } 

    self.bounces = YES; 

    return NO; 
} 

它帮助。

+2

如果有人没有得到它: 您嵌入的tableview实例必须实现shouldRecognizeSimultaneouslyWithGestureRecognizer。您可以复制上面的代码来计算返回值,或者您可以返回!(self.contentOffset.y> 0)。希望能帮助任何人。 –

0

我不认为这是关于用户易用性的明智解决方案。你应该使用Master-Detail Strategy

UINavigationController设置为rootViewController,然后按下您的主号码TableViewController,在选择每个单元格时,您可以推入新的TableViewController,其中包含所选单元格项目的详细数据。

编辑

如果你真的想添加一个的TableView里面TableViewCell然后,请按照link 1link 2

+0

即使你对MVC一致性绝对正确,嵌套的'UITableView's是一个可接受的设计模式。它确实增加了编码器在内存和性能优化方面的开销,但如果做得对,会产生一些非常好的结果。 – n00bProgrammer

+0

在TableViewCell中处理TableView的委托和数据源既不是小菜一碟... :)我认为使用我的策略会降低复杂性。 –

+0

@abagmut我已根据您的要求编辑了我的答案。检查它是否有帮助。 –

相关问题