style delegate objective-c cocoa-touch uitextview autocorrect

objective c - delegate - Cómo activar y desactivar el AutocorrectionType para un UITextView existente



uitextfield border style (4)

Además de cambiar el tipo de autocorrección a UITextAutoCorrectionNo, la UITextView debe ser forzada a reevaluar su estado de corrección. setNeedsRedraw no es suficiente pero establece el texto a sí mismo, por ejemplo,

textView.autocorrectionType = UITextAutocorrectionTypeNo; textView.text = textView.text;

hace que las líneas discontinuas rojas desaparezcan. NOTA: esta solución temporal se basa en un comportamiento no documentado y no se garantiza que funcione en futuras versiones de iOS.

Tengo una UITextView en la aplicación de mi iPhone para la cual quiero poder cambiar el Tipo de autocorrección.

Cuando un usuario está editando la vista de texto, quiero que el AutocorrectionType se establezca en UIAutocorrectionTypeYes. Cuando no se está editando la vista de texto, quiero que el AutocorrectionType se establezca en UIAutocorrectionTypeNo (porque no quiero que se vea ninguno de los subrayados de puntos rojos generados por la autocorrección)

Simplemente alternando el tipo de autocorrección de esta manera:

myTextView.autocorrectionType = UITextAutocorrectionTypeYes; myTextView.autocorrectionType = UITextAutocorrectionTypeNo;

No parece funcionar. ¿Existen limitaciones sobre cuándo puedo cambiar el AutocorrectionType o en qué situaciones surte efecto el cambio de AutocorrectionType?

EDITAR:

Para aclarar: No hay problemas para configurar el AutocorrectionType al inicializar el UITextView. El problema surge cuando quiero cambiar el AutocorrectionType para un UITextView existente. En mi caso, quiero darles a los usuarios la ventaja de la corrección automática cuando editan un UITextView, pero no quiero que se indique ningún error de ortografía con los subrayados de puntos rojos cuando el UITextView no se está editando, en parte porque también estoy exportando un UIView que contiene el UITextView como una imagen. El problema es que solo cambiar el valor de mi propiedad UITextView autocorrectionType no funciona.


Aquí hay una manera fácil de hacer esto para el escenario de exportación de imágenes:

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView { // Turn spell check on textView.autocorrectionType = UITextAutocorrectionTypeYes; return YES; } - (BOOL)textViewShouldEndEditing:(UITextView *)textView { // Turn spell check off and clean up red squiggles. textView.autocorrectionType = UITextAutocorrectionTypeNo; NSString *currentText = textView.text; textView.text = @""; textView.text = currentText; return YES; }


Intente llamar a -setNeedsDisplay en la vista de texto después de haber cambiado el autocorrectionType . Esto forzará la redacción de la vista de texto y, con suerte, borrará los subrayados rojos.

myTextView.autocorrectionType = UITextAutocorrectionTypeNo; [myTextView setNeedsDisplay];


Puede intentar primero ocultar el teclado y luego volver a mostrarlo. También actualice el uitextview. Si [UITextView setNeedsDisplay] no funciona para usted, intente [UITextView insertText:] y luego [UITextView deleteBackward]

[textView resignFirstResponde]; textView.autocorrectionType = UITextAutocorrectionTypeNo; [textView becomeFirstResponder]; [textView setNeedsDisplay];

o

[textView insertText:@" "]; [textView deleteBackward];