使用iOS 5.0及iPad的,我有一個UITextView中含有阿拉伯文字的應用程序,其中:不可編輯的UITextView左對齊RTL(阿拉伯語,希伯來語等),文字
myTextView.editable = NO;
奇怪的是,阿拉伯語文字突然左對齊,而不是右對齊,這對用戶的可讀性造成了相當大的問題。
我明白任何幫助克服這種奇怪的行爲!
使用iOS 5.0及iPad的,我有一個UITextView中含有阿拉伯文字的應用程序,其中:不可編輯的UITextView左對齊RTL(阿拉伯語,希伯來語等),文字
myTextView.editable = NO;
奇怪的是,阿拉伯語文字突然左對齊,而不是右對齊,這對用戶的可讀性造成了相當大的問題。
我明白任何幫助克服這種奇怪的行爲!
解決了!結果非常簡單:只需將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和更早版本的描述工作。
我希望這可以幫助任何人處理這個問題!