0

是否有一种简单的方法(函数、方法...)来验证用户键入的字符以查看它是否与 Mac OS Roman 兼容?我已经阅读了几十个主题,以找出 iOS 应用程序在引用CGContextShowTextAtPoint时崩溃的原因。我猜如果应用程序试图在图像上绘制一个包含 Mac OS Roman 集合中未包含的字符的字符串(即 ©),它可能会崩溃。这组有 256 个字符。我想知道除了将所选字符与这 256 个字符一一匹配之外,是否还有更好的方法?

谢谢

4

2 回答 2

2

您可以仔细阅读 https://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_text/dq_text.html 。

CGContextShowGlyphsAtPoint您可以使用而不是绘制任何编码 ,CContextShowTextAtPoint这样您就可以告诉它编码是什么。如果用户键入它,那么您将获得作为 NSString 的字符串,它是下面的 Unicode 字符串。可能最简单的方法是通过NSString'sUTF8String方法获取该用户输入的字符串的 utf8 编码。

如果您出于某种原因真的想坚持使用非常有限的 MacRoman,请使用NSString'cStringUsingEncoding:传入NSMacOSRomanStringEncoding来获取 MacRoman 字符串。不过请阅读有关此内容的文档NSString。如果用户字符串不能在 MacRoman 中无损编码,将返回 null。正如它所讨论的,您可以使用dataUsingEncoding:allowLossyConversion:andcanBeConvertedToEncoding:来检查。不过,请阅读讨论中cStringUsingEncoding:关于返回字符串生命周期的注意事项。 getCString:maxLength:encoding:可能最终成为您更好的选择。所有在. _NSString

于 2013-02-08T01:58:44.203 回答
1

这并不能直接回答问题,但此答案可能是您问题的解决方案。

如果你有一个NSString, 而不是使用CGContextShowTextAtPoint,你可以这样做:

[someStr drawAtPoint:somePoint withFont:someFont];

其中someStraNSString包含用户可以键入的任何 Unicode 字符,somePoint是 a CGPoint,并且someFontUIFont用于呈现文本的 。

于 2013-02-08T02:06:30.193 回答