Tengo que actualizar una pequeña cantidad de texto en una UITextView desplazable. Solo insertaré un personaje donde está el cursor actualmente, y lo haré con solo presionar un botón en mi barra de navegación.Detener salto de UITextView al configurar texto programáticamente
Mi problema es que cada vez que llamo al método setText de la vista de texto, salta a la parte inferior del texto. ¡He intentado usar contentOffset y restablecer selectedRange pero no funciona! Aquí está mi ejemplo:
// Remember offset and selection
CGPoint contentOffset = [entryTextView contentOffset];
NSRange selectedRange = [entryTextView selectedRange];
// Update text
entryTextView.text = entryTextView.text;
// Try and reset offset and selection
[entryTextView setContentOffset:contentOffset animated:NO];
[entryTextView setSelectedRange: selectedRange];
¿Hay alguna forma se puede actualizar el texto sin ningún movimiento de desplazamiento en todo ... como si sólo hubiera escrito algo en el teclado?
Editar:
He intentado usar el textViewDidChange: delegar método pero todavía no está desplazándose hasta la ubicación original.
- (void)textViewDidChange:(UITextView *)textView {
if (self.programChanged) {
[textView setSelectedRange:self.selectedRange];
[textView setContentOffset:self.contentOffset animated:NO];
self.programChanged = NO;
}
}
- (void)changeButtonPressed:(id)sender {
// Remember position
self.programChanged = YES;
self.contentOffset = [entryTextView contentOffset];
self.selectedRange = [entryTextView selectedRange];
// Update text
entryTextView.text = entryTextView.text;
}
Gracias por tu aportación. ¿Qué debería pasar en este método delegado? ¿Esto ocurre cuando debe producirse el restablecimiento final de contentOffset y selectedRange? –