0

ユーザーが入力した文字が Mac OS Roman と互換性があるかどうかを確認する簡単な方法 (関数、メソッドなど) はありますか? CGContextShowTextAtPointを参照して iOS アプリケーションがクラッシュする理由を調べるために、数十のトピックを読みました。Mac OS Roman セットに含まれていない文字を含む文字列 (つまり ©) を画像に描画しようとすると、アプリケーションがクラッシュする可能性があると思います。このセットには 256 の文字があります。選択した文字を 1 つずつその 256 文字と一致させる以外に良い方法はないでしょうか?

ありがとうございました

4

2 に答える 2

2

https://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_text/dq_text.html詳しく読んでみ てください。

CGContextShowGlyphsAtPointの代わりに使用して任意のエンコーディングを描画できる CContextShowTextAtPointため、エンコーディングが何であるかを伝えることができます。ユーザーがそれを入力すると、その下にある Unicode 文字列である NSString として文字列を取得します。おそらく最も簡単なのは、ユーザーが入力した文字列の utf8 エンコーディングをNSStringUTF8Stringメソッドで取得することです。

何らかの理由で非常に制限された MacRoman を使い続けたい場合は、NSStringcStringUsingEncoding:引き渡しを使用NSMacOSRomanStringEncodingして MacRoman 文字列を取得します。ただし、これに関するドキュメントを読んでくださいNSString。ユーザー文字列をロスレス MacRoman でエンコードできない場合は null を返します。それが議論するように、あなたは使用dataUsingEncoding:allowLossyConversion:canBeConvertedToEncoding:てチェックすることができます。cStringUsingEncoding:ただし、返された文字列のライフサイクルについて は、ディスカッションの注意事項をお読みください。getCString:maxLength:encoding:あなたにとってより良い選択になるかもしれません。すべて のクラス ドキュメントで説明されていNSStringます。

于 2013-02-08T01:58:44.203 に答える
1

これは質問に直接回答するものではありませんが、この回答は問題の解決策になる可能性があります。

NSStringを使用する代わりにがある場合はCGContextShowTextAtPoint、次のことができます。

[someStr drawAtPoint:somePoint withFont:someFont];

ここsomeStrで、 はNSStringユーザーが入力できる任意の Unicode 文字を含む であり、somePointCGPointであり、someFontUIFontテキストのレンダリングに使用する です。

于 2013-02-08T02:06:30.193 に答える