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

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

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

myTextView.editable = NO;

奇怪的是,阿拉伯文字突然左对齐而不是右对齐,给用户的可读性造成了很大的问题。

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

最佳答案

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

UITextView 在可编辑和不可编辑时的工作方式不同,尤其是在 RTL 文本方面。如果在可编辑的 TextView 中基本书写方向是 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 和更早版本的描述工作。

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

关于ios - 不可编辑的 UITextView 左对齐 RTL(阿拉伯语、希伯来语等)文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10859471/

相关文章:

ios - 如何让你的推送通知打开某个 View Controller ?

ios - Swift:闭包、完成处理程序和函数之间的区别?

objective-c - 多个 NSView 放入一个 Xib 文件中

ios - 在 UITextVIew 编辑为真时检测 NSAttributedString 中附加图像的点击

objective-c - 如何检测 NSString 中以 “@” 或 “#” 开头的单词?

ios - 在 map View 中显示动态注释图钉

ios - 如何在 viewmodel 中处理 RxSwift observable

objective-c - UIPicker 特定列和行的字体大小

objective-c - 使用Swift的TFHpple框架进行编译错误

iphone - 使用 UITextView 撤消/重做 (iOS/iPHone)