2013-04-27 35 views
2

我創建了兩種方法來更改UITextView的文本對齊方式。我的目標是iOS6及以上。這個想法是用戶可以改變textview輸入的對齊方式。如果輸入是英文的,下面的方法工作正常。如果在阿拉伯語輸入,它不會改變對齊方式。UITextView對齊從'從右到左'書面語言

-(void) changeLeftAllignment 
{ 
    myTextView.textAlignment = NSTextAlignmentLeft; 
} 

-(void) changeRightAllignment 
{ 
    myTextView.textAlignment = NSTextAlignmentRight; 
} 

這隻適用於英文輸入。如果我將鍵盤語言更改爲從右向左的阿拉伯語,則不再有效。

任何想法來解決這個問題?

感謝

+0

什麼是「它不工作」是什麼意思? – matt 2013-04-27 16:41:24

+0

如何使用「自然」對齊?它適用於英語和阿拉伯語。 – matt 2013-04-27 16:41:48

+0

這個想法是在用戶對TextView中的東西有所瞭解後,他可以調用這些方法來改變文本的對齊方式。問題是在用阿拉伯語寫作之後,它不會改變文本對齊方式,但如果英文它可以正常工作。 @馬特 – iMubarak 2013-04-27 19:52:41

回答

5

從iOS 6.0以上版本,你應該使用NSTextAlignmentNatural。枚舉UITextAlignment已棄用。如果您在iOS 6.0目標上運行代碼,它將自動使用自然對齊方式,並且所有代碼都將按預期工作。

在iOS系統的早期版本中,你可以檢查的語言輸入是否是RTL和反轉的排列:

- (BOOL)isRTL { 
    return ([NSLocale characterDirectionForLanguage:[[NSLocale preferredLanguages] objectAtIndex:0]] == NSLocaleLanguageDirectionRightToLeft); 
} 

-(void) changeLeftAllignment 
{ 
    myTextView.textAlignment = (![self isRTL]]) ? UITextAlignmentLeft : UITextAlignmentRight; 
} 

-(void) changeRightAllignment 
{ 
    myTextView.textAlignment = (![self isRTL]]) ? UITextAlignmentRight : UITextAlignmentLeft; 
}