Iphone 用于'的UITextView对齐;从右向左';书面语

Iphone 用于'的UITextView对齐;从右向左';书面语,iphone,ios,localization,Iphone,Ios,Localization,我创建了两种方法来更改UITextView的文本对齐方式。我的目标是iOS6及以上。其思想是用户可以更改textview输入的对齐方式。如果输入为英语,则以下方法可以正常工作。如果输入为阿拉伯语,则不会改变对齐方式 -(void) changeLeftAllignment { myTextView.textAlignment = NSTextAlignmentLeft; } -(void) changeRightAllignment { myTextView.textAlign

我创建了两种方法来更改UITextView的文本对齐方式。我的目标是iOS6及以上。其思想是用户可以更改textview输入的对齐方式。如果输入为英语,则以下方法可以正常工作。如果输入为阿拉伯语,则不会改变对齐方式

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

-(void) changeRightAllignment
{
    myTextView.textAlignment = NSTextAlignmentRight;
}
这只适用于英语输入。如果我把键盘语言从右向左改成阿拉伯语,它就不工作了

有什么办法解决这个问题吗


感谢您在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;
}

“它不再工作”是什么意思?使用“自然”对齐如何?它同时适用于英语和阿拉伯语。其想法是在用户在TextView中对某些内容进行了修改后,他可以调用这些方法来更改文本对齐方式。问题是在用阿拉伯语书写之后,它不会改变文本对齐方式,但如果用英语,它就可以了@马特