Pergunta

Ao escrever em um UITextView mais texto do que pode caber inteiramente dentro dele, o texto irá rolar para cima e o cursor, muitas vezes, colocar-se uma ou duas linhas acima da linha de fundo da vista. Esta é uma frustrante pouco como eu quero meu aplicativo para fazer bom uso de toda a altura da exibição de texto.

Basicamente o que eu quero é para configurar o UITextView para escrever-se a ele da parte mais baixa e não usá-lo apenas para rolagem.

Eu vi algumas perguntas semelhantes aqui , aqui aqui . No entanto, eu não vi uma solução adequada ainda.

Graças

Foi útil?

Solução

Eu tenho uma implementação ligeiramente diferente (eu quero desativar a rolagem), mas eu também tinha que parar o cursor saltar para fora do meu UITextView. Para fazer isso, eu implementei um nulo scrollRectToVisible no meu UITextView subclasse. Como esta:

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated
{
// do nothing. This fixes the cursor jumping above the field defect.
}

Outras dicas

excelente solução está em linhas subclasse UITextView add

-(void) setContentOffset:(CGPoint)contentOffset {
    [self setContentInset:UIEdgeInsetsZero];
    [super setContentOffset:contentOffset];
}

É um trabalho!

Use esta

NSRange myRange=NSMakeRange(outPutTextView.text.length, 0);

[outPutTextView scrollRangeToVisible:myRange];

se eu entendi direito, você pode usar

[textView setScrollEnabled:NO];

Para desativar a rolagem. o que dizer não para digitar quando o cursor alcançou a margem inferior ... talvez não seja boa solução, mas você pode adicionar algum valor limite (máximo de caracteres no [textView text]) e retornar NO no

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

método delegado do UITextView se [[textView text] length] > maxCharacters.

Eu acho parecem a propriedade 'contentOffset' também pode ser usado ...

Eu tenho a última linha por setFrame:

  1. Você pode setFrame para cerca de uma altura de linha
  2. Quando você está editando, em - (BOOL) textView:shouldChangeTextInRange:replacementText:, uso scrollRangeToVisible:, o argumento é selectedRange
  3. Quando você terminar edição, setFrame para o tamanho original
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top