Ao atribuir o foco por meio do becomeFirstResponder ao UISearchBar do UISearchController, o teclado não aparece

Passei bastante tempo pesquisando on-line e conversando com outros desenvolvedores sobre esse problema sem sucesso. O problema exato está descrito nesta postagem do SO (Concentre-se na UISearchBar, mas o teclado não aparece), embora tenha muitos anos.

Recentemente, mudei de usar o UISearchDisplayController e o UISearchBar obsoletos no IB e mudei para o UISearchController por meio do código para iOS8.

O problema que estou recebendo, no entanto, é que o foco está atribuído corretamente (você pode perceber porque o botão Cancelar é animado à direita da barra de pesquisa após o carregamento da exibição), no entanto, o teclado não aparece.

Aqui está o código que eu tenho.

.h

@property (nonatomic, strong) UISearchController *searchController;

.m

- (void)viewDidLoad {
    [super viewDidLoad];
    ...
    [self initializeSearchController];
    ....
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self.searchController setActive:YES];
    [self.searchController.searchBar becomeFirstResponder];
}

- (void)initializeSearchController {
    self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
    self.searchController.searchResultsUpdater = self;
    self.searchController.dimsBackgroundDuringPresentation = NO;
    self.searchController.delegate = self;
    self.searchController.searchBar.delegate = self;
    [self.searchController.searchBar sizeToFit];

    [self.tableView setTableHeaderView:self.searchController.searchBar];
    self.definesPresentationContext = YES;
}

As coisas que eu tentei até agora.

Tentei ligar para o transformFirstResponder com um atraso de 0,2 segundo, conforme sugerido em outra postagem do SO.

Eu configurei um ponto de interrupção em viewDidAppear e verifiquei que self.searchController e self.searchController.searchBar são objetos válidos, nem nulos.

Eu tentei estar em conformidade com o UISearchControllerDelegate e usando o seguinte trecho de código

aqui:

- (void)didPresentSearchController:(UISearchController *)searchController {
    //no matter what code I put in here to be,comeFirstResponder, it doesn't
    //matter because this is never called, despite setting the     
    //self.searchController.delegate = self AND 
    //self.searchController.searchBar.delegate = self.
}

Criei uma nova exibição do zero nos storyboards e segui para essa, para garantir que eu não tivesse algum remanescente antigo searchBar em minha exibição. isso também não funcionou.

Eu só testei isso em um dispositivo real (iPhone 6), e não é um problema de simulador não mostrar o teclado.

Estou sem idéias e já vi todas as perguntas e respostas relacionadas a essa na Web. Nada está funcionando.

Para esclarecer novamente o que está acontecendo, o searchBar se torna corretamente o primeiro respondedor, o botão Cancelar à direita dele anima a tela, provando isso, mas o teclado não aparece e o cursor não pisca no searchBar.

questionAnswers(10)

yourAnswerToTheQuestion