2011-06-29 3 views
0

У меня есть таблица, содержащая несколько пользовательских tableViewCells, каждая из которых содержит текстовый элемент. Я обнаружил, что если я введу текст в одно текстовое поле и (без нажатия кнопки «Готово» на клавиатуре) прокрутите текстовое поле за пределы экрана, чтобы ввести текст в другую ячейку, приложение сработает при изменении представления. Это происходит чаще всего в ландшафтном режиме, так как текущий tableViewCell нужно прокручивать за кадром, чтобы генерировать ошибку при изменении вида.Пользовательский tableViewCell resignFirstResponder при прокрутке за кадром

Я считаю, что когда ячейка уходит с экрана, соединение между ячейкой и клавиатурой прерывается и что, когда вид изменен, удаление их клавиатуры для не видимого (несуществующего) текстового поля вызывает авария.

Я уверен, что это простое исправление, но я еще не нашел его.

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

+0

Найдено решение здесь: http://stackoverflow.com/questions/5000785/resignfirstresponder-to-uitextviews-on-uitableviewcells-that-are-no-longer-on-scr мне нужно установить идентификатор на .xib, а также в .m файле – ShouldBeWriting

+0

Вам нужны доказательства. Чтобы собрать его, попробуйте отладить и вставьте журнал сбоев вместе со своим вопросом. – ZhangChn

ответ

0

Вы можете попробовать что-то вроде этого:

CustomUITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Gioni"]; 

// If no cell is available, create a new one using the given identifier. 
if (cell == nil) { 
    cell = [[[CustomUITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Gioni"] autorelease]; 
} 
else 
{ 
    [cell resignFirstResponderForObjectInCell]; 
} 

Таким образом, вы будете знать, когда ваш сотовый (один с вашим специальным идентификатором) будет повторно использовать ... так что это означает, что это на экране. Вы можете заставить его отказаться от статуса первого ответчика, прежде чем переделать другой, похожий на него.

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