2012-02-28 12 views
0

シナリオ:ユーザーはキーボード言語を動的に変更し、テキストをUITextViewに入力できます。文字列の書き込み方向

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

書き込みの方向を判断できる方法はありますか?

キーボードから入力したテキストまたは いくつかの魔法UITextViewまたは から私はこの問題を解決する助けてくださいどちらか。

おかげで、 Roshit

PS: 私もNSAttributedStringにテキストフィールドからのNSStringを変換し、CoreTextを使用して描く:UITextViewのTextAllignmentは

EDIT ...魔法を行うdoesnot。私は、万が一、このシナリオに記述方向を取得する(NSAttributedStringまたはCoreText

答えて

1

によってthe UITextInput protocolbaseWritingDirectionForPosition:inDirection:方法を見てみることができます。

UITextViewUITextFieldの両方がUITextInputプロトコルを実装しています。それは完全に罰金働いた

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; 
} 

:@robする

+0

恐ろしい...私は私の解決策を見つけたと思う。ありがとう、トン。 :) – Roshit

+0

これはiOS 5でのみ動作しますか?iOS 4.3ではクラッシュしました。何か案が ? – Roshit

+0

詳細を教えてください。私は試してみますが、最初のテキストのときにプログラムでテキスト方向を強制することはできません。ありがとう! –

1

おかげで、これは私が思い付いたものです。

ちょうど好奇心から.. 私は使用しました:UITextPosition *aPosition;私はそれを初期化して位置を設定していません。それでは、どうやってこの作業をしました @ rob-これに関する助言?

+1

おそらくテキストの始まりの書いている方向を伝えるだけです。実際にはアクセスできない 'UITextView'の実装に依存します。 'aPosition'を初期化する通常の方法は、' beginningOfDocument'プロパティや 'selectedTextRange.start'のようなものを使用します。 –

+0

Robが指摘するように、aPositionを初期化しないままにすることは悪い考えです。 [aTextView beginningOfDocument]または[aTextView endOfDocument]は、少なくともパラメータとして使用するために有効で定義された値になります。 positionFromPosition:offset:を呼び出して、先頭から任意の位置を取得することができます。初期化されていないスタック変数には任意の値を入れることができます。 –

関連する問題