iOS 5.0+ for iPad を使用して、UITextView にアラビア語のテキストを含むアプリがあります。
myTextView.editable = NO;
不思議なことに、アラビア語のテキストが突然左揃えになり、ユーザーの読みやすさに大きな問題が生じます。
この奇妙な動作を克服するための助けに感謝します!
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を表示したい方向に設定するだけです。上記のコードは、iOS5.1以前で説明されているように機能します。
これがこの問題を扱っている他の人の助けになることを願っています!