Actually, I should've simply called becomeFirstResponder AFTER [self.tableView reloadData]
in the same method, instead of trying to find some method that was called after table refresh inside UITableViewCell subclass or in UITableViewController class.
I didn't do it in the first place, probably, as I didn't have the reference to the cell in the place where [self.tableView reloadData] was called.
That's what worked (SOPSearchCell is the subclass of UITableViewCell, self is UITableViewController subclass instance):
[self.tableView reloadData]
// make searchField first responder again
NSUInteger indexes[] = {0, 0};
NSIndexPath *indexPath = [NSIndexPath indexPathWithIndexes:indexes length:2];
SOPSearchCell *cell = (SOPSearchCell *)[self.tableView cellForRowAtIndexPath: indexPath];
[cell.searchField becomeFirstResponder];