0

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

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

有没有办法确定写作方向。来自 UITextView输入的文本来自键盘的一些魔法

请帮我解决这个问题。

谢谢,罗希特

PS: UITextView 的 TextAllignment 没有魔法..

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

4

3 回答 3

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

于 2012-03-01T11:40:02.163 回答
1

看一下协议baseWritingDirectionForPosition:inDirection:方法。UITextInput

两者都UITextView实现UITextField协议UITextInput

于 2012-03-01T07:08:29.693 回答
0

一个快速且可内联的选项是像这样使用 Locale:

[NSLocale lineDirectionForLanguage:[[NSLocale currentLocale]languageCode]]

将它用于像这样的制表位之类的东西:

NSTextTab* tab = [[NSTextTab alloc]initWithTextAlignment:(([NSLocale lineDirectionForLanguage:[[NSLocale currentLocale]languageCode]]==kCFLocaleLanguageDirectionRightToLeft)?NSTextAlignmentRight:NSTextAlignmentLeft) location:100.0f options:@{}];
于 2020-06-06T14:56:31.667 回答