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

2019-10-16 19:29发布

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

myTextView.editable = NO;

奇怪的是,阿拉伯语的文字突然对齐到左边,而不是权利,造成相当多的问题,用户的可读性。

我明白任何克服这种奇怪的行为帮助!

Answer 1:

解决它! 原来,这是非常简单:只需设定textAlignment到UITextAlignmentRight。

UITextView的工作方式不同可编辑的,而不是,尤其是当它涉及到RTL文本。 如果基本的书写方向是RTL可编辑的文本视图,必须对齐文本左,不正确的,为了真正右对齐文本(RTL的书写方向翻转的默认值!)

所以,当你有一个UITextView,你可能想先检查可编辑的属性,然后用第一个字符的书写方向(这是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和前面所描述的上面的代码工作。

我希望这可以帮助别人处理这个问题!



文章来源: Non-Editable UITextView Left-Aligns RTL (Arabic, Hebrew, etc) Text