场景。用户可以动态改变键盘语言,在UITextView中输入文字。
问题:如果用户将键盘语言改为阿拉伯文并输入文字,文字的方向是从右到左。如果用户将键盘语言改为阿拉伯语并输入文字,文字的方向从右到左。
有什么方法可以确定书写方向。无论是从 UITextView 或 输入的文本 或键盘上的一些魔法
请帮我解决这个问题。
谢谢,Roshit
PS:UITextView的TextAllignment并没有起到神奇的作用。
EDIT:我还把Textfield中的NSString转换为NSAttributedString,并使用CoreText绘制。我可以通过任何机会获得这种情况下的写作方向(NSAttributedString 或 核心文本)
看一看 baseWritingDirectionForPosition:inDirection:
方式 的 UITextInput
协议.
两者 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;
我还没有初始化它,并为它设置了一个位置。那么,这是怎麽做到的呢?@rob- 有什么帮助吗?
一个快速的,因此可以在行内的选择是使用Locale这样的。
[NSLocale lineDirectionForLanguage:[[NSLocale currentLocale]languageCode]]
用它来做像Tab Stops这样的事情:
NSTextTab* tab = [[NSTextTab alloc]initWithTextAlignment:(([NSLocale lineDirectionForLanguage:[[NSLocale currentLocale]languageCode]]==kCFLocaleLanguageDirectionRightToLeft)?NSTextAlignmentRight:NSTextAlignmentLeft) location:100.0f options:@{}];