Я решил свою проблему следующим образом: перезагрузите таблицу в следующем блоке UIView и используйте логическую переменную isTableReloading для отслеживания перезагрузки таблицы.
[UIView animateWithDuration:0.5 animations:^{
weakSelf.isTableReloading = true;
[weakSelf.tableView reloadData];
} completion:^(BOOL finished) {
weakSelf.isTableReloading = false;
}];
В промежутке между перезагрузками, если пользователь касается ячейки таблицы, и isTableReloading == true, тогда отложите метод didSelect или проигнорируйте этот вызов, если ваше приложение разрешает.