iOS) Скрытие клавиатуры в ячейке в UITableView

-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"searchCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    searchField = (UITextField *)[cell viewWithTag:10000];

    [searchField resignFirstResponder];
}

Хорошо, у меня есть ячейка с именем идентификатора «searchCell». Эта ячейка содержит один единственный UITextField с тегом 10000, который вызывает всплывающую клавиатуру в нижней части экрана. Когда пользователь касается другой ячейки, клавиатура должна быть скрыта, чтобы у пользователя было больше места для прокрутки вверх и вниз.

Однако, когда появляется клавиатура и пользователь касается (выбирает) ячейку, приведенный выше код вызывается, но не работает... :( Похоже, что назначенный UITableViewCell не тот, который пользователь использует в данный момент. Что такое Я делаю неправильно здесь?


person Raccoon    schedule 23.01.2013    source источник
comment
Кстати, добавление forIndexPath вообще не помогло.   -  person Raccoon    schedule 23.01.2013
comment
У вас есть делегаты, установленные в вашем пере и в вашем файле .h? Также сделайте это => UITextField *txtFieldObj = (UITextField *)[cell viewWithTag:10000]; Также сделайте это в didselectRowAtIndexpath, добавьте if(yourIndexpath.row==0), затем только откажитесь от клавиатуры или if(yourindexpath!=0), затем откажитесь, иначе сделайте что-нибудь еще.. [txtFieldObj resignFirstResponder]; Также NSLog(@txtField %@,textFieldObj); // проверяем, не пусто ли оно..   -  person Reno Jones    schedule 23.01.2013
comment
Вы установили делегата своего текстового поля? если нет, попробуйте textfield searchfield.delegate = self; и вызовите [searchField resignFirstResponder]; в методе -(BOOL)textFieldShouldReturn:(UITextField *)textField   -  person u.gen    schedule 23.01.2013
comment
Большое спасибо вам, ребята :D   -  person Raccoon    schedule 23.01.2013
comment
О, я также должен был использовать didSelectRowAtIndexPath.. не 'didDeselect...' :)   -  person Raccoon    schedule 24.01.2013


Ответы (1)


  1. Сделайте свой класс делегатом UITextField
  2. Перейдите к файлу раскадровки, нажмите на текстовое поле и перейдите к инспектору соединений.
  3. Под розетками подключите делегата к контроллеру представления.
  4. Запустите его в симуляторе. Это будет работать
person Ashish Agarwal    schedule 23.01.2013
comment
Совершенно не знал, что мне нужно подключить делегата к контроллеру представления. - person Raccoon; 23.01.2013