2010-06-12 6 views
0

У меня есть контроллер табличного представления в приложении iphone. Таблица имеет два раздела. Первая секция имеет две строки, а вторая секция имеет одну строку. Второй раздел имеет собственную таблицу представления таблицы.Таблица Просмотр прокрутки при редактировании текстового поля iphone

Вторая секция имеет текстовое поле, которое скрывается, когда текстовое поле начинает редактирование, и появляется клавиатура. Я хочу, чтобы этот вид таблицы прокручивался при появлении клавиатуры.

Я пробовал следующий код, который я наткнулся на разных сайтах, но напрасно.

Заранее спасибо.

-(void) textFieldDidBeginEditing:(UITextField *)textField { 

    CGRect textFieldRect = [textField frame]; 
    [self.tableView scrollRectToVisible:textFieldRect animated:YES]; 
} 
          atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; 
} 

-(void) textFieldDidBeginEditing:(UITextField *)textField { 

    UITableViewCell *cell = (UITableViewCell*) [[textField superview] superview]; 
    [self.tableView scrollToRowAtIndexPath:[tableView indexPathForCell:cell] 
          atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; 
} 

ответ

3

Вы хотите использовать метод табличного вида setContentOffset. Определить величину вертикальной прокрутки (в пикселях), а затем:

CGFloat verticalScroll = ... your code here ... 
[self.tableView setContentOffset:CGPointMake(0, verticalScroll) animated:YES]; 
9

я столкнулся с этим на Static Cell TVC-х. Существует проблема при переопределении viewWillAppear и не называя его Super. Так что если вы делаете это, убедитесь, чтобы позвонить

[super viewWillAppear:animated]; 

в верхней части viewWillAppear

+0

хороший звонок, я упустил это после добавления viewWillAppear: к одному статическому TVC, а не к другому. – NSTJ

+0

спас меня от мира боли. благодаря :) –

0

Моя проблема была я добавлял ячейку таблицы, содержащую UITextField в функции

- (UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { 

. Если вы это сделаете, автоматическая прокрутка UITableView не работает.

Итак, вам нужно выполнить некоторую арифметику, когда вы показываете свою последнюю строку и размещаете здесь свой специальный UITableViewCell вместе со всеми остальными.

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
Смежные вопросы