场景:用户可以动态更改键盘语言并在UITextView中输入文本。
问题:如果用户将键盘语言更改为阿拉伯语并输入文本,则文本处于从右到左的方向。
有没有办法可以确定写作方向。来自 UITextView 或 输入的文字或 键盘上的一些魔力
请帮我解决这个问题。
谢谢, Roshit
PS:UITextView的TextAllignment没有做出魔法......
编辑: 我还将NSString从Textfield转换为NSAttributedString并绘制Using CoreText。我是否可以在这种情况下获得写作方向( NSAttributedString 或 CoreText )
答案 0 :(得分:1)
查看the UITextInput
protocol的baseWritingDirectionForPosition:inDirection:
方法。
UITextView
和UITextField
都实施了UITextInput
协议。
答案 1 :(得分: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-对此有何帮助?
答案 2 :(得分:0)
一种快捷的方法是使用语言环境,因此很容易出错:
[NSLocale lineDirectionForLanguage:[[NSLocale currentLocale]languageCode]]
将其用于诸如Tab Stop之类的事情:
NSTextTab* tab = [[NSTextTab alloc]initWithTextAlignment:(([NSLocale lineDirectionForLanguage:[[NSLocale currentLocale]languageCode]]==kCFLocaleLanguageDirectionRightToLeft)?NSTextAlignmentRight:NSTextAlignmentLeft) location:100.0f options:@{}];