2014-11-19 3 views
1

Как правило, в UITableView последним UITableViewCell не разрешено прокручивать вверх, я хочу разрешить последний UITableViewCell, пока он не достигнет первой строки.Разрешить последний UITableViewCell прокручиваться до первой строки

Один из способов, которым я знаю, заключается в добавлении пустого нижнего колонтитула в UITableView, но я не могу понять, сколько места мне нужно, чтобы дать нижний колонтитул, чтобы прокручивать последнюю строку.

Edit: Добавление пустой footerview в UITableView сделал трюк для меня

+0

добавить tablefotterview. вычислить высоту, как (высота экрана - ваша последняя высота ячейки). и установите высоту в его табличное представление. –

+0

Невозможно найти высоту последней ячейки при ее динамическом вычислении – Abhishek

ответ

0

Набор contentInsets

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

Невозможно найти высоту последней ячейки заранее, так как ее вычислено динамически – Abhishek

+0

Вы рассчитать сами или автопробег рассчитывает ее для вас? – sikhapol

+0

Autolayout делает это для меня – Abhishek

0

простой:

Создать переменную UITableView от набора и сброса, если вы хотите прокрутки вне.

Простой exmaple продемонстрирует вам

@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]; 
    }]; 
} 
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; 
     } 
    } 
} 

Примечание: оно не применяется, если высота кадра таблицы больше, чем содержимое таблицы. она применяется только тогда, когда параметры temrect пересекаются с клеткой

надеюсь это помогает

+0

Вскоре это проверит и вернется – Abhishek

Смежные вопросы