UITextView selectedRange não exibindo quando definido programaticamente
Meu problema é que programaticamente definir o selectedRange de UITextViewseleciona o texto, masnão indica visualmente que está selecionado. Isso soa como um bug no OS 3.0 / 3.1. Mais importante, qualquer solução ou sugestão para obter a seleção para exibir? (projeto de amostra vinculado na parte inferior da mensagem)
Como eu sei que está selecionado, já que não estou recebendo feedback visual? Duas razões:
Nenhum cursor piscandoTocar em qualquer tecla do teclado exclui o texto existente no intervalo de seleção.Eu tenho um UITextView em um viewcontroller que permite editar um valor alterável pelo usuário. O controlador do editor é aberto quando um toque duplo é recebido em uma linha da tabela ou o usuário toca no botão de divulgação de detalhes em uma linha. O viewcontroller chega via presentModalViewController, e no método viewWillAppear do editor VC, inicio o teclado com[self.textView becomeFirstResponder];
Às vezes eu quero iniciar o editor com todo o conteúdo da textview selecionada para que o usuário simplesmente comece a digitar e apague o conteúdo existente (isso é porque eu crio novos itens com títulos padrão, então é quase certo que o usuário primeiro apague todo o conteúdo do campo de texto do editor e digite seu título).
Algumas das coisas que já tentei:
definindo o intervalo selecionado em viewDidAppear (em vez de e além de fazê-lo em textViewDidBeginEditing).Substituindo _textView.text por uma cópia do texto e aplicando o selectedRange (em textViewDidBeginEditing) ... pensando que talvez se eu estou lidando com bug de framework, isso pode contornar isso.[[_textView webView] selectAll];
(api privado). mesmo comportamento, o texto é selecionado sem feedback visual.enviando _textView setNeedsDisplay e setNeedsLayout.usando um performSelector ... afterDelay para definir o selectedRange para que isso aconteça depois de sair textViewDidBeginEditing.// UITextFieldDelegate Methods...
- (void)textViewDidBeginEditing:(UITextView *)_textView
{
NSInteger len = [_textView.text length];
if( self.selectInitialText ){
//NOTE: this is not working as expected. Indeed the text is
// selected but the highlighting of the text isn't showing.
_textView.selectedRange = NSMakeRange(0,len);
}
}
- EDIT -
Aqui está o projeto de amostra enviado ao Apple BugReporter.Baixe o projeto de exemplo BugReport_7380723
Informação adicional:
Ao criar e brincar com o envio do projeto de amostra, descobri duas coisas:
Quando houver texto selecionado, mas nenhum destaque for exibido, toque em algumas teclas, em seguida, "agitar para desfazer" e o texto original será restauradomas é em destaque.
Se você fizer uma seleção manualmente na visualização de texto, toque no botão "Selecionar tudo" [refere-se ao projeto de amostra vinculado acima], todo o texto é selecionadoE exibe o realce corretamente.