Перезагрузите UITable на лету при редактировании UITextField внутри одной из ячеек

У меня есть UITable, содержащий некоторые таможенные UITableCells. Эти ячейки содержат несколько UILabels и UITextField. Источник данных таблицы берется из свойства главного контроллера. (Этот контроллер также является делегатом и dataSource для таблицы).

Вот упрощенный снимок экрана пользовательского интерфейса:

schreenshot

Теперь мне нужно «на лету» обновлять содержимое всех UILabels, когда пользователь редактирует одно из UITextFields. Для этого я слушаю событие «Редактирование изменено» на уровне UITextField. Это вызывает следующее действие:

- (IBAction) editChangeHandler: (id) sender {
    MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
    [[delegate.viewController.myDataSourceArray objectAtIndex:self.rowIndex] setANumber: [theTextField.text intValue]];
    [delegate.viewController reloadRows];
}

Метод reloadRows в viewController таков:

- (void) reloadRows {
    NSLog(@"called reloadRows");
    //perform some calculations on the data source objects here...
    [theUITable reloadData];
}

Моя проблема здесь в том, что всякий раз, когда пользователь изменяет значение в поле, метод reloadRows вызывается успешно, так что очевидно reloadData, но это также приводит к закрытию клавиатуры.

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

Кто-нибудь знает решение этой проблемы или сталкивался с той же проблемой?

6
задан Adam Wenger 22 November 2011 в 01:48
поделиться