2013-04-27 4 views
2

Я создал два метода для изменения выравнивания текста UITextView. Я нацелен на iOS6 и выше. Идея состоит в том, что пользователь может изменить выравнивание ввода текста. если вход на английском языке, ниже методы работают нормально. Если входы на арабском языке, это не изменит выравнивание.UITextView выравнивание для «справа налево» письменный язык

-(void) changeLeftAllignment 
{ 
    myTextView.textAlignment = NSTextAlignmentLeft; 
} 

-(void) changeRightAllignment 
{ 
    myTextView.textAlignment = NSTextAlignmentRight; 
} 

Это прекрасно работает для всего английского ввода. Если я изменил язык клавиатуры на арабский, который справа налево, он больше не работает.

Любая идея решить эту проблему?

Благодаря

+0

Что «это больше не работает» означает? – matt

+0

Как насчет использования «естественного» выравнивания? Он работает как на английском, так и на арабском языках. – matt

+0

Идея заключается в том, что пользователь правильно что-то в TextView, он может вызвать эти методы, чтобы изменить выравнивание текста. проблема заключается в том, что после написания на арабском языке он не изменит выравнивание текста, но если на английском он работает нормально. @ Matt – iMubarak

ответ

5

С прошивкой 6.0+ вы должны использовать NSTextAlignmentNatural. Перечисленное значение UITextAlignment устарело. Если вы запустите свой код на цели iOS 6.0, он автоматически будет использовать естественное выравнивание, и все будет работать должным образом.

В предыдущих версиях IOS, вы можете проверить, является ли входной язык RTL и инвертировать выравнивание:

- (BOOL)isRTL { 
    return ([NSLocale characterDirectionForLanguage:[[NSLocale preferredLanguages] objectAtIndex:0]] == NSLocaleLanguageDirectionRightToLeft); 
} 

-(void) changeLeftAllignment 
{ 
    myTextView.textAlignment = (![self isRTL]]) ? UITextAlignmentLeft : UITextAlignmentRight; 
} 

-(void) changeRightAllignment 
{ 
    myTextView.textAlignment = (![self isRTL]]) ? UITextAlignmentRight : UITextAlignmentLeft; 
} 
Смежные вопросы