2013-02-08 2 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 자세히 읽어 줄 수도 있습니다 감사합니다.

CContextShowTextAtPoint 대신 CGContextShowGlyphsAtPoint을 사용하여 인코딩을 그릴 수 있으므로 인코딩이 무엇인지 알 수 있습니다. 사용자가 그것을 입력하면 유니 코드 문자열 아래 NSString 같이 문자열을 가져올 수 있습니다. 아마도 가장 쉬운 방법은 NSStringUTF8String 메서드를 통해 해당 사용자가 입력 한 문자열의 utf8 인코딩을 얻는 것입니다.

당신이 정말로 다음, 어떤 이유로 매우 제한 MacRoman도 고수 MacRoman도 문자열을 얻을 수 NSMacOSRomanStringEncoding 전달 NSStringcStringUsingEncoding: 사용하려면

. 이 문서를 NSString에서 읽으십시오. 사용자 문자열을 MacRoman에서 무손실로 인코딩 할 수없는 경우 null을 반환합니다. 토론 할 때 dataUsingEncoding:allowLossyConversion:canBeConvertedToEncoding:을 사용하여 확인할 수 있습니다. 그래도 반환 된 문자열의 수명주기에 대한 토론의 cStringUsingEncoding:에 대한주의 사항을 읽으십시오. getCString:maxLength:encoding:이 더 나은 선택이 될 수 있습니다. 모두 class documentation NSString에 대해 논의되었습니다.

+0

CGContextShowGlyphsAtPoint를 살펴 보겠습니다. 고맙습니다. –

1

이 질문에 직접 대답하는 것은 아니지만이 대답은 문제의 해결책 일 수 있습니다.

someStr은 사용자가 입력 할 수있는 유니 코드 문자를 포함하는 NSString입니다
[someStr drawAtPoint:somePoint withFont:someFont]; 

somePointCGPoint이며, someFontUIFont입니다 : 당신이 NSString이있는 경우

대신 CGContextShowTextAtPoint를 사용하여, 당신은 할 수있다 텍스트를 렌더링하는 데 사용합니다.

+0

감사합니다. 내가 한번 볼게. –

관련 문제