允许最后一个UITableViewCell滚动到第一行

时间:2014-11-19 11:54:00

标签: ios objective-c uitableview

通常在UITableView中,最后UITableViewCell不允许向上滚动,我想允许最后一个UITableViewCell直到它到达第一行。

我知道的一种方法是向UITableView添加空页脚,但我无法弄清楚需要多少空间才能允许最后一行滚动页脚。

编辑:向UITableView添加空的footerview确实对我有用

3 个答案:

答案 0 :(得分:3)

我不确定这个,但我认为它可能有助于依赖于contentInset以及最后一个单元格高度是否已知

  -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
  {
     CGRect temrect=CGRectMake(0, scrollView.contentSize.height-3, scrollView.frame.size.width, 3);
    // here i am expecting the height of the last row is atleast 3 and 
     for (UIView *temv in scrollView.subviews)
      {
         if (CGRectIntersectsRect(temrect, temv.frame)) // check ing for intersection
          {

            CGFloat bottomInset = scrollView.frame.size.height - temv.frame.size.height;
              scrollView.contentInset = UIEdgeInsetsMake(0, 0 , bottomInset, 0);
             break;
         }
    }
 }

注意:如果表视图框架高度大于表视图contentsize,则不适用。仅当temrect参数与单元格相交时才适用

希望有所帮助

答案 1 :(得分:0)

设置contentInsets

CGFloat bottomInset = tableView.frame.size.height - heightOfLastCell;
tableView.contentInsets = UIEdgeInsetsMake(0, 0 , bottomInset, 0);

答案 2 :(得分:0)

一个简单的:

创建一个UITableView关闭设置的变量并在您想要向外滚动时重置。

一个简单的例子将向您展示

@property (nonatomic) CGPoint  tblOffSet;

- (void) keyboardOpen:(UIView *)view {
    self.tblOffSet = self.tblView.contentOffset;
}

- (void) keyboardClose {
    [UIView animateWithDuration:0.3f animations:^{
        [self.tblView setContentOffset:self.tblOffSet];
    }];
}