写字符串的方向

时间:2012-02-28 13:19:04

标签: ios uitextview core-text nsattributedstring uitextinput

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

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

有没有办法可以确定写作方向。来自 UITextView 输入的文字键盘上的一些魔力

请帮我解决这个问题。

谢谢, Roshit

PS:UITextView的TextAllignment没有做出魔法......

编辑: 我还将NSString从Textfield转换为NSAttributedString并绘制Using CoreText。我是否可以在这种情况下获得写作方向( NSAttributedString CoreText

3 个答案:

答案 0 :(得分:1)

查看the UITextInput protocolbaseWritingDirectionForPosition:inDirection:方法。

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