2013-02-08 34 views
0

是否有一種驗證用戶鍵入的字符的簡單方法(函數,方法...),以查看它是否與Mac OS Roman兼容?我已經閱讀了幾十個主題,以瞭解爲什麼iOS應用程序崩潰時參考CGContextShowTextAtPoint。我猜如果應用程序試圖在圖像上繪製一個包含未包含在Mac OS Roman集中的字符的字符串(即©),它可能會崩潰。該組中有256個字符。我想知道是否有更好的方法,而不是將所選字符與256個字符逐一匹配?如何驗證與MacRoman兼容的字符

謝謝

回答

2

您可能會給https://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_text/dq_text.html仔細閱讀。

您可以使用CGContextShowGlyphsAtPoint而不是CContextShowTextAtPoint來繪製任何編碼,以便您可以告訴它編碼是什麼。如果用戶輸入它,那麼你會得到一個NSString字符串,它是一個下面的Unicode字符串。可能最簡單的方法是通過NSStringUTF8String方法獲取該用戶輸入字符串的utf8編碼。

如果你真的想堅持非常有限的MacRoman出於某種原因,然後使用NSStringcStringUsingEncoding:傳遞NSMacOSRomanStringEncoding得到一個MacRoman字符串。不過請閱讀NSString中的相關文檔。如果用戶字符串無法在MacRoman中無損編碼,將返回null。正如它討論你可以使用dataUsingEncoding:allowLossyConversion:canBeConvertedToEncoding:來檢查。儘管如此,請閱讀cStringUsingEncoding:討論中有關返回字符串生命週期的注意事項。 getCString:maxLength:encoding:可能最終成爲您的更好選擇。在class documentation中討論NSString

+0

我來看看CGContextShowGlyphsAtPoint。謝謝。 –

1

這並不直接回答問題,但這個答案可能是解決您的問題。

如果你有一個NSString,而不是使用CGContextShowTextAtPoint,你可以這樣做:

[someStr drawAtPoint:somePoint withFont:someFont]; 

其中someStr是包含一個用戶可以輸入任何Unicode字符的NSStringsomePointCGPoint,並​​是UIFont用於呈現文本。

+0

謝謝。我會看一看。 –

相關問題