UITextView对齐“从右到左”的书面语言

时间:2013-04-27 16:32:38

标签: iphone ios localization

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

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

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

这仅适用于英语输入。如果我将键盘语言从右到左更改为阿拉伯语,它将不再起作用。

有什么想法解决这个问题?

由于

1 个答案:

答案 0 :(得分: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;
}