Ios 不可编辑的UITextView左对齐RTL(阿拉伯语、希伯来语等)文本
使用iOS 5.0+for iPad,我有一个应用程序,在UITextView中包含阿拉伯语文本,其中:Ios 不可编辑的UITextView左对齐RTL(阿拉伯语、希伯来语等)文本,ios,objective-c,uitextview,right-to-left,Ios,Objective C,Uitextview,Right To Left,使用iOS 5.0+for iPad,我有一个应用程序,在UITextView中包含阿拉伯语文本,其中: myTextView.editable = NO; 奇怪的是,阿拉伯语文本突然向左对齐,而不是向右对齐,这给用户的可读性带来了很大的问题 我感谢任何人帮助我克服这种奇怪的行为 解决了!结果很简单:只需将textAlignment设置为UITextAlignmentRight UITextView在可编辑和不可编辑时的工作方式不同,尤其是在RTL文本方面。如果在可编辑文本视图中,基本写入方向
myTextView.editable = NO;
奇怪的是,阿拉伯语文本突然向左对齐,而不是向右对齐,这给用户的可读性带来了很大的问题
我感谢任何人帮助我克服这种奇怪的行为 解决了!结果很简单:只需将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及更早版本所述相同
我希望这能帮助其他人处理这个问题 解决了!结果很简单:只需将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及更早版本所述相同
我希望这能帮助其他人处理这个问题