Domanda

Quando si scrive in un UITextView più testo di quello che può contenere interamente al suo interno, il testo scorrerà verso l'alto e il cursore si posizionerà spesso una o due righe sopra la riga inferiore della vista. Questo è un po 'frustrante poiché voglio che la mia applicazione faccia buon uso dell'intera altezza della visualizzazione del testo.

Fondamentalmente quello che voglio è configurare UITextView per scrivere fino alla sua parte più bassa e non usarlo solo per lo scorrimento.

Ho visto alcune domande simili qui , qui e qui . Tuttavia non ho ancora visto una soluzione adeguata.

Grazie

È stato utile?

Soluzione

Ho un'implementazione leggermente diversa (voglio disabilitare lo scorrimento), ma ho anche dovuto interrompere il salto del cursore da UITextView. Per fare questo, ho implementato un null scrollRectToVisible nella mia sottoclasse UITextView. In questo modo:

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

Altri suggerimenti

la soluzione eccellente è nella sottoclasse UITextView aggiungi linee

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

È lavoro!

usa questo

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

[outPutTextView scrollRangeToVisible:myRange];

se ho capito bene, puoi usare

[textView setScrollEnabled:NO];

per disabilitare lo scorrimento. che ne dici di non digitare quando il cursore ha raggiunto il margine inferiore ... forse non è una buona soluzione ma puoi aggiungere un valore di soglia (caratteri massimi nel [textView text] ) e restituire NO in

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

metodo delegato di UITextView se [[textView text] length] > maxCharacters .

Trovo che la proprietà 'contentOffset' possa essere utilizzata anche ...

Ho l'ultima riga di setframe:

  1. Puoi impostare frame a circa un'altezza della linea
  2. Durante la modifica, in - (BOOL) textView: shouldChangeTextInRange: sostituzioneText: , utilizzare scrollRangeToVisible: , l'argomento è selectedRange
  3. Al termine della modifica, setframe nella dimensione originale
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top