(iPhone) Selected Range para um UITextview não editável (ou outros métodos de manuseio de cliques?)

StackOverflow https://stackoverflow.com/questions/668652

Pergunta

Estou usando um UITextView manter o conteúdo estático (em chinês, o que significa que os caracteres têm uma largura fixa). Quero permitir que os usuários cliquem em um personagem no texto e traga informações de dicionário para esse personagem. Conheço todos os problemas em torno da falta de cópia e cola e tudo mais, mas espero que haja uma maneira de fazer isso sem esperar o firmware do iPhone 3.0.

No começo, pensei em usar UITextViews selectedIndex propriedade. Infelizmente, quando o UITextView não é editável, o seguinte código no UITextViewsempre retorna o comprimento de todo o bloco de texto:

NSRange touchPoint = self.selectedRange;
NSLog(@"Selection: %d", touchPoint.location);

Isso faz sentido, suponho, como em um não editável UITextView Não há como selecionar um ponto de inserção, mas isso não me ajuda. :)

Outra abordagem seria calcular, usando o fato de que o texto chinês tem largura fixa, onde o clique pousou e qual texto deve estar nesse local na época, mas isso é complicado pela pontuação que pode causar uma linha para envolver mais cedo, trazendo Personagens anteriores em uma linha.

Existe outra maneira de saber qual texto está sob um evento de toque que estou perdendo?

Foi útil?

Solução

Ligue o seguinte antes de pedir o selectedRange:

[[textView webView] updateSelectionWithPoint:point];

Nota: Ambos -webView e -updateSelectionWithPoint: são APIs privadas. Você pode ser um comportamento equivalente ao alternar editável, tornando -se o socorrista e enviando eventos de toque falso, mas isso seria muito mais trabalho

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top