字符串的写入方向



场景:用户可以动态更改键盘语言,并在UITextView中输入文本。

问题:如果用户将键盘语言更改为阿拉伯语并输入文本,则文本为从右到左的方向。

有没有一种方法可以让我决定写作方向。来自UITextView输入的文本键盘上的一些魔法

请帮我解决这个问题。

谢谢,Roshit

附言:UITextView的TextAllign并没有起到神奇的作用。。

编辑:我还将Text字段中的NSString转换为NSAttributedString,并使用CoreText绘制。我是否可以在这种情况下获得写作方向(NSAttributedStringCoreText

看看UITextInput协议的baseWritingDirectionForPosition:inDirection:方法。

UITextViewUITextField都实现了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:@{}];

最新更新