2012-02-28 21 views
0

場景:用戶可以動態更改鍵盤語言並在UITextView中輸入文本。字符串的書寫方向

問題:如果用戶將鍵盤語言更改爲阿拉伯語並輸入文本,則文本是從右到左的方向。

有沒有一種方法可以確定書寫方向。無論是從 的UITextView輸入的文本一些魔術從鍵盤

請幫我解決這個問題。

感謝, Roshit

PS:UITextView中的TextAllignment不列入做魔術..

編輯: 我也是從文本字段轉換的NSString成NSAttributedString並繪製使用CoreText。我可以用任何機會,在這種情況下(NSAttributedStringCoreText

回答

1

獲得書寫方向看一看的the UITextInput protocolbaseWritingDirectionForPosition:inDirection:方法。

UITextViewUITextField都執行UITextInput協議。

+0

太棒了...我想我找到了我的解決方案。萬分感謝。 :) – Roshit 2012-03-01 11:32:45

+0

這隻能在iOS 5中工作嗎?它在iOS 4.3中對我來說是崩潰的。任何想法 ? – Roshit 2012-03-12 15:11:02

+0

請你詳細解釋一下嗎?我嘗試但不能以編程方式在初始文本時強制文本方向。謝謝! – 2013-12-01 04:45:34

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-對此有何幫助?

+1

這可能只是給你文字開頭的書寫方向。這真的取決於'UITextView'的實現,我無法訪問它。初始化'aPosition'的正常方法是使用類似'beginningOfDocument'屬性或'selectedTextRange.start'的東西。 – 2012-03-01 21:37:17

+0

正如Rob指出的那樣,將一個未初始化的位置看起來似乎是一個糟糕的主意。 [aTextView beginningOfDocument]或[aTextView endOfDocument]至少應該是一個有效且已定義的值作爲參數。您可能能夠調用positionFromPosition:offset:來獲取相對於開始的任意位置。未初始化的堆棧變量可以包含任意值。 – 2012-11-15 19:18:46