场景:用户可以动态更改键盘语言,并在UITextView中输入文本。
问题:如果用户将键盘语言更改为阿拉伯语并输入文本,则文本为从右到左的方向。
有没有一种方法可以让我决定写作方向。来自UITextView或输入的文本或键盘上的一些魔法
请帮我解决这个问题。
谢谢,Roshit
附言:UITextView的TextAllign并没有起到神奇的作用。。
编辑:我还将Text字段中的NSString转换为NSAttributedString,并使用CoreText绘制。我是否可以在这种情况下获得写作方向(NSAttributedString或CoreText)
看看UITextInput
协议的baseWritingDirectionForPosition:inDirection:
方法。
UITextView
和UITextField
都实现了UITextInput
协议。
感谢@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;
我还没有初始化它并为它设置位置。那么这是如何工作的。@罗伯-有人帮忙吗?
一个快速的,因此在lineable中,选项是使用这样的Locale:
[NSLocale lineDirectionForLanguage:[[NSLocale currentLocale]languageCode]]
使用它像这样的制表位:
NSTextTab* tab = [[NSTextTab alloc]initWithTextAlignment:(([NSLocale lineDirectionForLanguage:[[NSLocale currentLocale]languageCode]]==kCFLocaleLanguageDirectionRightToLeft)?NSTextAlignmentRight:NSTextAlignmentLeft) location:100.0f options:@{}];