字符串的写作方向

问题描述 投票:0回答:3

场景。用户可以动态改变键盘语言,在UITextView中输入文字。

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

有什么方法可以确定书写方向。无论是从 UITextView输入的文本键盘上的一些魔法

请帮我解决这个问题。

谢谢,Roshit

PS:UITextView的TextAllignment并没有起到神奇的作用。

EDIT:我还把Textfield中的NSString转换为NSAttributedString,并使用CoreText绘制。我可以通过任何机会获得这种情况下的写作方向(NSAttributedString核心文本)

ios uitextview core-text nsattributedstring uitextinput
3个回答
1
投票

看一看 baseWritingDirectionForPosition:inDirection: 方式 UITextInput 协议.

两者 UITextViewUITextField 落实 UITextInput 协议。


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- 有什么帮助吗?


0
投票

一个快速的,因此可以在行内的选择是使用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:@{}];
© www.soinside.com 2019 - 2024. All rights reserved.