Comando de suporte, controle e teclas de seta quando um teclado externo é anexado

Eu tenho um aplicativo iOS onde tudo que eu quero fazer é fornecer mais suporte para combinações básicas de teclas de comando, como comando + a, comando + s, comando + x, comando + v e amigos quando um usuário conectou um teclado bluetooth.

Eu sei que isso é possível. Aplicativos como o Textastic e muitos outros aplicativos de edição suportam esses recursos.

Eu olhei para o UIResponder (que parece ser usado apenas pelo menu pop-up), UIKeyInput, UITextInput [Delegate] e outros documentos API sem referência a como fazer isso.

É fácil suportar quais opções são exibidas no UIMenuController usando (BOOL) ação canPerformAction: (SEL) com o remetente: remetente (id). No entanto, esse método não parece ser chamado quando um teclado Bluetooth está conectado. Então, eu preciso implementar outro método específico para o teclado ou outra coisa.

Eu agora suspeito que pode ser que o subsistema de texto seja responsável por executar as ações. No entanto, não há documentação que eu possa encontrar! Além disso, nenhum dos métodos delegados UITextInput é chamado quando uma operação é executada. Estou quase pensando que a solução é privada e que preciso perguntar especificamente à Apple como obter acesso a esses recursos (o que acabei de fazer).

ATUALIZAR:

positionFromPosition: inDirection: offset: é o método a ser usado para detectar quando a tecla de seta é pressionada. Depois que o iOS chamou esse método, ele chama setSelectedText :. Você precisará trabalhar o resto do encanamento.

ATUALIZAÇÃO 2:

Eu pude responder todas as perguntas que eu tinha. Por favor, consulte a solução marcada para as respostas.

questionAnswers(2)

yourAnswerToTheQuestion