2013-04-27 33 views
2

我创建了两种方法来更改UITextView的文本对齐方式。我的目标是iOS6及以上。这个想法是用户可以改变textview输入的对齐方式。如果输入是英文的,下面的方法工作正常。如果在阿拉伯语输入,它不会改变对齐方式。UITextView对齐从'从右到左'书面语言

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

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

这只适用于英文输入。如果我将键盘语言更改为从右向左的阿拉伯语,则不再有效。

任何想法来解决这个问题?

感谢

+0

什么是“它不工作”是什么意思? – matt 2013-04-27 16:41:24

+0

如何使用“自然”对齐?它适用于英语和阿拉伯语。 – matt 2013-04-27 16:41:48

+0

这个想法是在用户对TextView中的东西有所了解后,他可以调用这些方法来改变文本的对齐方式。问题是在用阿拉伯语写作之后,它不会改变文本对齐方式,但如果英文它可以正常工作。 @马特 – iMubarak 2013-04-27 19:52:41

回答

5

从iOS 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; 
}