0

シナリオ:ユーザーはキーボード言語を動的に変更し、UITextViewにテキストを入力できます。

問題:ユーザーがキーボード言語をアラビア語に変更してテキストを入力すると、テキストは右から左の方向になります。

書き方を決める方法はありますか?UITextViewまたは 入力されたテキストまたは キーボードからの魔法のいずれかから

これを解決するのを手伝ってください。

ありがとう、Roshit

PS:UITextViewのTextAllignmentは魔法を実行しません。

編集:NSStringをテキストフィールドからNSAttributedStringに変換し、CoreTextを使用して描画します。万が一、このシナリオでの執筆の方向性を知ることはできますか(NSAttributedStringまたはCoreText

4

3 に答える 3

1

プロトコルbaseWritingDirectionForPosition:inDirection:方法を見てください。UITextInput

両方UITextViewとプロトコルをUITextField実装します。UITextInput

于 2012-03-01T07:08:29.693 に答える
1

@robのおかげで、これが私が思いついたものです:

UITextPosition *aPosition;
UITextWritingDirection aDirection = [aTextView baseWritingDirectionForPosition:aPosition inDirection:UITextStorageDirectionForward];

switch (aDirection) {
    case UITextWritingDirectionNatural:
        NSLog(@"Natural");
        break;

    case UITextWritingDirectionLeftToRight:
        NSLog(@"L-R");
        break;

    case UITextWritingDirectionRightToLeft:
        NSLog(@"R-L");
        break;

    default:
        break;
}

それは完全にうまくいきました。

好奇心から..使用しました:UITextPosition *aPosition;初期化して位置を設定していません。それでは、これはどのように機能しましたか。@ rob-これについて何か助けはありますか?

于 2012-03-01T11:40:02.163 に答える
0

迅速で、したがってインライン化できないオプションは、次のようにロケールを使用することです。

[NSLocale lineDirectionForLanguage:[[NSLocale currentLocale]languageCode]]

次のようなタブストップなどに使用します。

NSTextTab* tab = [[NSTextTab alloc]initWithTextAlignment:(([NSLocale lineDirectionForLanguage:[[NSLocale currentLocale]languageCode]]==kCFLocaleLanguageDirectionRightToLeft)?NSTextAlignmentRight:NSTextAlignmentLeft) location:100.0f options:@{}];
于 2020-06-06T14:56:31.667 に答える