不可编辑的UITextView左对齐RTL(阿拉伯语,希伯来语等)文本

时间:2012-06-02 03:04:05

标签: ios objective-c uitextview right-to-left

使用iOS 5.0+ for iPad,我在UITextView中有一个包含阿拉伯文字的应用程序,其中:

myTextView.editable = NO;

奇怪的是,阿拉伯语文本突然左对齐而不是右对齐,导致用户可读性出现相当大的问题。

我感谢任何克服这种奇怪行为的帮助!

1 个答案:

答案 0 :(得分:6)

解决了!事实证明它非常简单:只需将textAlignment设置为UITextAlignmentRight。

UITextView在可编辑时的工作方式不同,特别是在RTL文本方面。如果基本书写方向是可编辑文本视图中的RTL,则必须将文本左对齐,而不是右对齐,以使文本实际对齐(RTL书写方向翻转默认值!)

因此,当您有UITextView时,您可能需要先检查editable属性,然后使用第一个字符的写入方向(这是iOS确定文本是左对齐还是右对齐)来设置textAlignment属性

例如:

// check if the text view is both not editable and has an RTL writing direction
if (!someTextView.editable && [someTextView baseWritingDirectionForPosition:[someTextView beginningOfDocument] inDirection:UITextStorageDirectionForward] == UITextWritingDirectionRightToLeft) {
        // if yes, set text alignment right
        someTextView.textAlignment = UITextAlignmentRight;
    } else {
        // for all other cases, set text alignment left
        someTextView.textAlignment = UITextAlignmentLeft;
    }
}

iOS 6更新:

在iOS 6中,UITextView的textAlignment属性实际上对应于它在屏幕上的外观。对于iOS 6,只需将textAlignment设置为您想要查看的方向。上面的代码适用于iOS 5.1及更早版本。

我希望这有助于处理此问题的任何其他人!