更改 UITextView 文本方向
默认情况下,iOS 不支持我的语言,所以 unicode 不是一个选项,所以我在 UITextView 上使用嵌入的 true type 字体,
它在大多数情况下都有效,但我的问题就像阿拉伯语和希伯来语,我的语言是从右写的向左。所以我需要改变文本的方向(不是文本对齐)。
我做了一些搜索,他们都谈论 NSLocale 之类的东西,但它可以在代码中更改吗?如果我可以将其更改为阿拉伯语/希伯来语之类的内容,我想它会起作用,但它应该用代码完成,因为我不想更改手机的语言。
那么我的文本输入选项到底有哪些呢?任何帮助将不胜感激。
谢谢。
my language is not supported by iOS by default, so unicode is not an option so i am using a embedded true type font on a UITextView
it works for the most part, but my issue is like Arabic, and Hebrew my language is written from right to left. So i need to change the direction of the text (Not Text Alignment).
i did some searches, they all talk about NSLocale and stuff, but can it be changed in code? if i can change it to something like Arabic/Hebrew it would work i guess, but it should be done in code, because i dont want change the language of the phone.
so what really are my options for text input? any help would be appreciated.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
只需使用 Unicode 202B 字符进行从右到左嵌入即可。
示例:
uiTextView.text = [NSString stringWithFormat:@"\u202B%@",textString];
just use the Unicode 202B character for RIGHT-TO-LEFT EMBEDDING.
Example:
uiTextView.text = [NSString stringWithFormat:@"\u202B%@",textString];
你好
我认为通过使用带有 html 和 css 的 UIWebView 你可以完成这项工作
Hi
I think by using UIWebView with html and css you can do the job
对我来说,简单地将 \u202B 添加到字符串中,直接添加到 .strings 文件中并不能解决问题(最终结果将逐字打印出“202B”部分)。然而,在调用 localizedStringForKey 返回后,将 \u202B 添加到字符串中确实可以解决问题。
因此,我的解决方案是,我将任意字符串“RLE_SYMBOL”直接插入到 .strings 文件中的字符串中,然后在调用 localizedStringForKey 之后,我将“RLE_SYMBOL”替换为“\u202B”。
有点间接,不是最好的解决方案,而是一个快速的解决方案。
For me simply adding the \u202B into the string directly into the .strings file didn't do the trick (The final result would print out literally print out the "202B" portion). However adding the \u202B into the string after it returns from the call to localizedStringForKey does do the trick.
Thus my solution, I inserted the arbitrary string "RLE_SYMBOL" directly into the string in the .strings file, then after the call to localizedStringForKey I replace "RLE_SYMBOL" with "\u202B".
A bit indirect, not the greatest solution but a quick solution.
我一直面临着同样的问题。我的语言类似于阿拉伯语,从右到左方向书写。对我来说最简单的解决方案是将文本对齐方式更改为右对齐,并在输入每个字符后将光标向左移动。这适用于 SWIFT 3.0
I have been facing the same issue. My language is similar to arabic, writing from Right to Left direction. The simplest solution for me was to change the text alignment to right and move the cursor to the left after each character is entered. This works on SWIFT 3.0
Iphone 无法正确显示希伯来语和其他从右到左的文本。所以我认为你无法改变文本的方向。
The Iphone can not display Hebrew and other right-to-left texts correctly. so i think there is no way of u can change direction of the text.
您可以在文本视图中每行的开头放置一个“从右到左嵌入”Unicode 字符。
名称:从右到左嵌入
统一码:202B
UTF8 : E2 80 AB
请注意,该字符是不可见的(无形状)。
以下代码段用 EOL+RTL_EMBEDDING 字符串替换行尾字符:
You can place a "right-to-left embedding" Unicode character at start of each line in the text view.
Name: RIGHT-TO-LEFT EMBEDDING
Unicode : 202B
UTF8 : E2 80 AB
Note that this character is invisible (No shapes).
The following piece of code replaces the end-of-line characters with a EOL+RTL_EMBEDDING string :
你的问题让我很感兴趣。所以在一个小时内我就想出了解决方案。它远非完美,但您可以使用它并修复剩余的错误。
这是一个带有文本视图的简单视图控制器。您可以添加文本键入它,或者您可以使用设置值
所以这里是代码:
ReverseTextVC.h
ReverseTextVC.m
希望它可以帮助您 =)
You question have really interested me. So in a matter of hour I've came up with solution. It is far from perfect, but you can use it and fix remaining bugs.
This is a simple view controller with text view. You can add text typing it or you can set the value using
So here is the code:
ReverseTextVC.h
ReverseTextVC.m
Hope it helps you =)