Ios7 UITextView在iOS 7中不正确地呈现自定义字体

Ios7 UITextView在iOS 7中不正确地呈现自定义字体,ios7,uitextview,multilingual,right-to-left,custom-font,Ios7,Uitextview,Multilingual,Right To Left,Custom Font,我的应用程序使用UITextView输入叙利亚文(Estangelo字体),但UITextView错误地呈现了一些字母,如下所示: 我使用UILabel和UITextView对其进行了测试。UILabel显示正确,但UITextView不正确地显示顶部点并将其移动到底部(请参见上面的结果) 此问题仅在iOS 7中出现,在iOS 6中不会出现。请告诉我是否有办法解决这个问题 这是 几天前,我在iOS 7中遇到了与您相同的问题(但字体不同)。 在设置了文本之后,我设置了字体,这对我很有效。因此,对

我的应用程序使用UITextView输入叙利亚文(Estangelo字体),但UITextView错误地呈现了一些字母,如下所示:

我使用UILabel和UITextView对其进行了测试。UILabel显示正确,但UITextView不正确地显示顶部点并将其移动到底部(请参见上面的结果)

此问题仅在iOS 7中出现,在iOS 6中不会出现。请告诉我是否有办法解决这个问题

这是


几天前,我在iOS 7中遇到了与您相同的问题(但字体不同)。 在设置了文本之后,我设置了字体,这对我很有效。因此,对于您的情况:

textView.text = @"ܩ̈ ܡ̄ ܬ̇ ܒ̃"; // Setting the text.
textView.font = [UIFont fontWithName:@"East Syriac Adiabene" size:24]; // Setting the font and it's size.
这可能看起来很傻,但对我来说很有效

也看到这个。对于如何在
UITextView
中使用自定义字体,有许多技巧,这些技巧可能对您有所帮助

编辑:

iOS 7还在
UITextView
上引入了一个新的
selectable
属性,用于启用文本选择。因此,请确保您已完成以下操作:

self.textField.editable = YES;
self.textField.selectable = ON;

我对这个问题进行了一点调试,它似乎是
NSLayoutManager
布局文本的一个错误。正如其他答案所指出的,
UITextView
是自iOS7以来围绕TextKit构建的,因此在内部使用
NSLayoutManager
来布局文本<代码>UILabel使用核心文本直接布局文本。两者最终都使用核心文本来呈现图示符

你应该在苹果公司打开一份bug报告,然后公布数字,这样人们就可以复制它了。到目前为止,iOS7.1 Beta中尚未解决该问题

作为一种解决方法,您可以使用其他核心文本替代编辑器替换
UITextView
,在不存在问题的情况下,这些编辑器直接使用核心文本进行布局和渲染

我进行了测试,它正确地显示了文本。它实现了一个类似于
UITextView
的API,但在内部使用核心文本

以下是将
UITextView
SECoreTextView
交换后的效果:

SETextView *textView = [[SETextView alloc] initWithFrame:CGRectMake(0, 0, 100, 40)];
textView.center = CGPointMake(self.view.center.x, self.view.center.y+40);
textView.font = [UIFont fontWithDescriptor:desc size:24];
textView.text = @"ܩ̈ ܡ̄ ܬ̇ ܒ̃";
textView.textColor = [UIColor blackColor];
textView.backgroundColor = [UIColor whiteColor];
textView.editable = YES;

[self.view addSubview:textView];

投了赞成票,所以你得到了一些赏金,很高兴这不是我的问题!我可以肯定地说,苹果的字体系统有问题,特别是像素测量和位置。在对MacOS和iOS的个人作品这一主题进行了大量研究之后,我在苹果网站上看到了一些帖子,大意是他们已经知道他们有这些问题。我认为他们正在努力解决这个问题,但这是一个架构问题,很可能不会在一个版本中解决,而是需要多个版本来解决所有问题。你试过7.1测试版吗?不知道它是否真的修复了,只是想知道。@iMS可能值得注意的是,当我将这些字符粘贴到Chrome的url/搜索框中时,我看到了相同的效果。我同意这似乎是LTR字段中RTL文本的混淆。但是,我尝试将
UITextView
设置为从右向左的写入方向,但它仍然无法正确渲染。这让我想知道字符串本身是否需要一些RTL说明符,所以我在字符串前面加了字符,但仍然不走运。我建议您提交一个错误,抱歉,不能在模拟器和设备中与我一起工作。@iMS-您能在这里附上您的演示项目源代码,仅包含标签、文本视图和自定义字体吗??谢谢:)ios7api让我unhappy@VitalyS. 给它成熟的时间。TextKit在苹果的iOS系统中是非常新的。确保打开一个bug报告,这样苹果最终可以修复它!
SETextView *textView = [[SETextView alloc] initWithFrame:CGRectMake(0, 0, 100, 40)];
textView.center = CGPointMake(self.view.center.x, self.view.center.y+40);
textView.font = [UIFont fontWithDescriptor:desc size:24];
textView.text = @"ܩ̈ ܡ̄ ܬ̇ ܒ̃";
textView.textColor = [UIColor blackColor];
textView.backgroundColor = [UIColor whiteColor];
textView.editable = YES;

[self.view addSubview:textView];