3

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

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

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

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

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

谢谢

4

1 回答 1

7

从 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;
}
于 2013-04-27T17:18:36.837 回答