是否有一種驗證用戶鍵入的字符的簡單方法(函數,方法...),以查看它是否與Mac OS Roman兼容?我已經閱讀了幾十個主題,以瞭解爲什麼iOS應用程序崩潰時參考CGContextShowTextAtPoint。我猜如果應用程序試圖在圖像上繪製一個包含未包含在Mac OS Roman集中的字符的字符串(即©),它可能會崩潰。該組中有256個字符。我想知道是否有更好的方法,而不是將所選字符與256個字符逐一匹配?如何驗證與MacRoman兼容的字符
謝謝
是否有一種驗證用戶鍵入的字符的簡單方法(函數,方法...),以查看它是否與Mac OS Roman兼容?我已經閱讀了幾十個主題,以瞭解爲什麼iOS應用程序崩潰時參考CGContextShowTextAtPoint。我猜如果應用程序試圖在圖像上繪製一個包含未包含在Mac OS Roman集中的字符的字符串(即©),它可能會崩潰。該組中有256個字符。我想知道是否有更好的方法,而不是將所選字符與256個字符逐一匹配?如何驗證與MacRoman兼容的字符
謝謝
您可以使用CGContextShowGlyphsAtPoint
而不是CContextShowTextAtPoint
來繪製任何編碼,以便您可以告訴它編碼是什麼。如果用戶輸入它,那麼你會得到一個NSString字符串,它是一個下面的Unicode字符串。可能最簡單的方法是通過NSString
的UTF8String
方法獲取該用戶輸入字符串的utf8編碼。
如果你真的想堅持非常有限的MacRoman出於某種原因,然後使用NSString
的cStringUsingEncoding:
傳遞NSMacOSRomanStringEncoding
得到一個MacRoman字符串。不過請閱讀NSString
中的相關文檔。如果用戶字符串無法在MacRoman中無損編碼,將返回null。正如它討論你可以使用dataUsingEncoding:allowLossyConversion:
和canBeConvertedToEncoding:
來檢查。儘管如此,請閱讀cStringUsingEncoding:
討論中有關返回字符串生命週期的注意事項。 getCString:maxLength:encoding:
可能最終成爲您的更好選擇。在class documentation中討論NSString
。
這並不直接回答問題,但這個答案可能是解決您的問題。
如果你有一個NSString
,而不是使用CGContextShowTextAtPoint
,你可以這樣做:
[someStr drawAtPoint:somePoint withFont:someFont];
其中someStr
是包含一個用戶可以輸入任何Unicode字符的NSString
,somePoint
是CGPoint
,並是UIFont
用於呈現文本。
謝謝。我會看一看。 –
我來看看CGContextShowGlyphsAtPoint。謝謝。 –