티스토리 툴바



2011/12/09 01:19

iOS Spell Checking and Word Completion

몇달전부터 졸업 논문을 쓰기 위해서 아이폰에서 자동완성, 추천어 기능을 만들고 있습니다.

이 부분에 대해서 자료도 부족하고 해서 고민하고 있었는데, 오늘 Tech Talk World Tour 2011에 갔더니 AirPlay에 대한 내용 대신에 "Managing Keyboard Interaction in iOS Apps"로 변경되어 강의를 듣고 Lab에 가서 강의를 했던 에반젤리스트에게 질문을 할 수 있는 좋은 기회였습니다.
(섹시한 통역 언니가 2명 있었으나 너무 바빠서 허접한 영어로 물어봤는데, 정말 친절하게 잘 알려줬습니다.)

대부분의 질문에 "한국어는 안돼"와 "Private API라서 안돼"와 같이 다 안된다는 이야기만 들었지만 
버그를 한개 찾아서 알려주는 놀라운 소득이 있었습니다. 잡설은 그만하고 아래를 보시면 됩니다..

iOS에서 언어처리를 위해서 꼭 봐야할 문서가 있습니다. (저는 10번정도 본듯)
 

 
하지만 "Spell Checking and Word Completion"에 가면 UITextChecker를 이용하면 되고 아래 소스로 실행하면 된다고 써 있습니다.

- (IBAction)spellCheckDocument:(id)sender {
    NSInteger currentOffset = 0;
    NSRange currentRange = NSMakeRange(0, 0);
    NSString *theText = textView.text;
    NSRange stringRange = NSMakeRange(0, theText.length-1);
    NSArray *guesses;
    BOOL done = NO;
 
    NSString *theLanguage = [[UITextChecker availableLanguages] objectAtIndex:0];
    if (!theLanguage)
        theLanguage = @"en_US";
 
    while (!done) {
        currentRange = [textChecker rangeOfMisspelledWordInString:theText range:stringRange
            startingAt:currentOffset wrap:NO language:theLanguage];
        if (currentRange.location == NSNotFound) {
            done = YES;
            continue;
        }
        guesses = [textChecker guessesForWordRange:currentRange inString:theText
            language:theLanguage];
        NSLog(@"---------------------------------------------");
        NSLog(@"Word misspelled is %@", [theText substringWithRange:currentRange]);
        NSLog(@"Possible replacements are %@", guesses);
        NSLog(@" ");
        currentOffset = currentOffset + (currentRange.length-1);
    }
}
 
근데 막상 해보면 UITextChecker가 없습니다. (며칠을 삽질 했습니다.)
구글을 뒤져도 알 수 없습니다. 
UIKit 에반젤리스트도 실행을 못해서 당황하더군요.

결국 해결했는데 원인은 Header에 아래와 같이 하면 됩니다.

#import <UIKit/UITextChecker.h>


원래 
보통 UI클래스는 UIKit.h에 선언 되어 있어 위와 같이 따로 import를 안해도 됩니다.
하지만 UITextChecker는 UIKit.h에 누락 되어 있기 때문에 위와 같이 해주면 되는 것이죠.

iOS에서 언어처리를 하는 사람이 많지 않아 발견을 못한것 같다고 하더라구요.
제가 버그를 찾았으니 선물 안주냐고 했더니 엄지를 일으키며 A+를 주겠다고 했습니다.(짠돌이들)

 
나중에 그 부분 수정되면 나름 뿌듯할 것 같습니다. 
아마도 쓰는 분들은 많지 않겠지만, 혹시나 어려움에 처하신 분들이 있을까봐 글을 남깁니다. 
Trackback 0 Comment 1
2011/02/20 20:04

Twitter xAuth 인증 메일 쓰는 방법

앱에서 twitter 연동하기 위해는 xAuth 사용해야 합니다.(편하니까)

하지만 이것을 쓰기 위해서는 twitter API 신청 외에 자신이 필요한지에 대해서 설명하는 메일을 보내서 인증 받아야 합니다.

 

포맷이나 정보가 없어서 난해한데 저는 안되는 영어로 쏼라 쏼라하여 인증을 받았습니다.

트위터를 통해 의외로 많은 분들이 질문 주셔서 깜짝 놀랐습니다. 거절 당하신 분도 많으시더라구요.

그래서 이렇게 정리하고자 글을 씁니다.

 

먼저 메일로 api@twitter.com 에게 요청하는지와 함께 정보를 같이 보냅니다.

저는 앱을 설명하기 위하여 디자인 가이드 파일을 첨부했습니다.



Hi, My name is Kwon, ohsang that live in Seoul. (South Korea)

 

I was developing iPhone App for 어떤회사.

It's a little bit same twitter. So our client want to function that share the post with twitter.

 

So I need xAuth for login API and write twitter API.

 

I will attach a file that is my app information.

See the page 14, 18. (page 14 is send posting , page 18 is login.)

 

My twitter ID is cetauri@gmail.com.

My twitter API key(Consumer key) is xxxxxxxxxxxxxxxxxxxxxxxxx.

My Consumer secret is xxxxxxxxxxxxxxxxxxxxxxxxx

 

Please activate soon. I'm waitting.

Thank you


그러면 후에 아래와 같은 메일을 받으실 있습니다.

(공손하지만 친절한 같지는 않네요..)


 3 저는 아래와 같은 메일을 받았습니다.


참고하세요

Trackback 0 Comment 1
2010/10/10 00:13

2010.10.09 양평-인제 라이딩

양평역에서 인제까지 갔습니다. 
속초까지 가려 했지만 컨디션 난조로 돌아 왔습니다..





거리는 약 100km, 평속은 12.5km 입니다.  7시간 정도 걸렸습니다.
평속은 쉬는 시간까지 포함 하기 때문에 달린 시간으로 본다면 20km 정도는 간 것 같습니다.


살인적인 고도.. 미시령을 넘으면 볼만하겠네요..

Trackback 0 Comment 2