Pregunta UItextView texto árabe alineado a la derecha


Usando mi teclado árabe personalizado en UItextView inputView, estoy llenando mi textView con el texto árabe pero no puedo alinear el texto escrito a la derecha .... Necesito ayuda para alinear el texto a la derecha.

-(BOOL)textViewShouldBeginEditing:(UITextView *)textView{

 if(showCustomKeyboard==NO){
 [textView resignFirstResponder];
 textView.inputView=nil;
 [textView becomeFirstResponder];
 return YES; 
}

 else{
     [textView resignFirstResponder];
     if(customKeyboard==nil){
     customKeyboard=[[CustomKeyboard alloc] initWithFrame:CGRectMake(0, 264, 320, 216)];
     [customKeyboard setDelegate:self];
 } 
 if([[UIApplication sharedApplication] respondsToSelector:@selector(inputView)]){
     if (textView.inputView == nil) {
           textView.inputView = customKeyboard;
           [textView becomeFirstResponder];
     }
 } 
    self.customKeyboard.currentField=textView;
    [textView becomeFirstResponder];
 }
 return YES; 
}

6
2018-03-26 09:47


origen


Respuestas:


Puede establecer la dirección de escritura de una UITextView utilizando el selector setBaseWritingDirection:

UITextView *someTextView = [[UITextView] alloc] init];
[someTextView setBaseWritingDirection:UITextWritingDirectionLeftToRight forRange:[someTextView textRangeFromPosition:[someTextView beginningOfDocument] toPosition:[someTextView endOfDocument]]];

El código es un poco complicado porque UITextView admite tener diferentes partes del texto con diferentes direcciones de escritura. En mi caso, utilicé [someTextView textRangeFromPosition: [someTextView beginningOfDocument] toPosition: [someTextView endOfDocument]] para seleccionar el rango de texto completo de UITextView. Puede ajustar esa parte si sus necesidades son diferentes.

También es posible que desee comprobar si el texto en su UITextView es LTR a RTL. Puedes hacer eso con esto:

if ([someTextView baseWritingDirectionForPosition:[someTextView beginningOfDocument] inDirection:UITextStorageDirectionForward] == UITextWritingDirectionLeftToRight) {
    // do something...
}

Tenga en cuenta que especifiqué el comienzo del texto usando [someTextView beginningOfDocument] y busqué utilizando UITextStorageDirectionForward. Sus necesidades pueden diferir.

Si subclase UITextView, reemplace todos estos ejemplos de código con "self" y no "someTextView", por supuesto.

Recomiendo leer sobre el protocolo UITextInput, al que UITextView se ajusta, en http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextInput_Protocol/Reference/Reference.html.

Advertencia sobre el uso de la propiedad textAlignment en iOS 5.1 o anterior: si la usa con este enfoque junto con la configuración de la dirección base de escritura, tendrá problemas porque el texto RTL cuando se alinea a la izquierda en un UITextView se alinea visualmente a la derecha. Configurar texto con una dirección de escritura RTL para alinearlo a la derecha lo alineará a la izquierda de UITextView.


16
2018-06-02 02:23



Tratar textAlignment propiedad.

textView.textAlignment = UITextAlignmentRight;

Echa un vistazo a Referencia de la clase UITextView.

EDITAR: Tal vez CATextLayer puede ayudarte, alguien sugiere usar esta clase para personalizar el texto, pero nunca lo he usado personalmente ...

De lo contrario, puede forzar su textView para invertir su entrada en UITextFieldDelegate método:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

El campo de texto llama a este método siempre que el usuario escriba un nuevo carácter en el campo de texto o elimine un carácter existente. Aquí puede reemplazar su entrada con un NSString nuevo donde coloca los caracteres de derecha a izquierda.

Espero que esto tenga sentido ...

Ah ... No te olvides de establecer

textView.textAlignment = UITextAlignmentRight;

para mover su mensaje a la derecha.


4
2018-03-26 09:55



Prueba este código:

yourtextview.textAlignment = UITextAlignmentRight;

Espero que esto te ayude.


1
2018-03-26 09:58



Algo que nadie mencionó aquí o en cualquier otra publicación es que asegúrese de no haber llamado a SizeToFit para TextView. Simplemente alinea la vista de texto (no el texto) a la izquierda, lo que da la ilusión de que el texto es de izquierda a derecha en lugar de derecha a izquierda.


0
2017-10-10 11:42



Si está creando una interfaz de usuario desde Storyboard, la restricción establecida para Lead or Trailing space y value of First Item será Respetar la dirección del lenguaje


0
2017-12-28 07:01