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

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

myTextView.editable = NO; 

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

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

解决了! 事实certificate它非常简单:只需将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及更早版本相同。

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