1

У меня есть подкласс UITableViewCellПочему UIkeyboard не оживляет при вызове из пользовательской ячейки?

Когда пользователь прикасается CELL, я называю перезарядку, как это:

[_tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 

// This is where magic happens... 
[_tableView beginUpdates]; 
[_tableView endUpdates]; 

И новая ячейка принимает показывает вверх. Эта новая клетка становится первым ответчиком для _workName UITextField, как это:

@implementation TWMainViewPlusExpandedCell 

- (void) awakeFromNib 
{   
    [_workName becomeFirstResponder]; 

} 

Клавиатура показывает вверх, но без анимации. Это мгновение! Кажется, нет никакой анимации!

Однако, когда я ухожу с клавиатуры, вызвав resignFirstResponder, он уйдет в отставку с анимацией, как и ожидалось.

Я что-то упустил?

Спасибо!

ответ

2

Я думаю, что ваша камера становится ответчиком и поднимает клавиатуру до или во время анимации tableview, вызванной перезагрузкой. Попробуйте

- (void) awakeFromNib 
{   
    [_workName performSelector:@selector(becomeFirstResponder) onThread:[NSThread getMainThread] withObject:nil withDelay:0.1]; 

} 

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

+0

Я загружаю таблицу, потому что прикосновение делает новую ячейку вместо старой. Это неправильный подход? – nmdias

+0

Я делал это с задержкой, как вы и предполагали, и исправлял ситуацию. Разве нет лучшего способа сделать это? На более старом iPhone, если выполнение требует немного больше времени, анимация stutturs. – nmdias

+0

Проблема заключается в том, что, как вы видите, вы полагаетесь на сроки, которые не могут быть определенными. Задержка - это своего рода обходной хак. Если вы получите нужные результаты, зачем тратить больше времени. –