Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 不可编辑的UITextView左对齐RTL(阿拉伯语、希伯来语等)文本_Ios_Objective C_Uitextview_Right To Left - Fatal编程技术网

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

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文本方面。如果在可编辑文本视图中,基本写入方向

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

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及更早版本所述相同

我希望这能帮助其他人处理这个问题