요즘 노는 시간 도중도중 공부를 하고있는데

 

그 공부하고있는것중 ios용 키보드를 하나 만들고있다.

 

이곳에 쏟아 붇는시간이 얼마되지않아 진도가 많이 느리고 

 

처음에 제대로 공부하고 계획짜서 시작한게아니라 벌써 2번이나 갈아엎은 프로젝트이다.

 

기록을 살펴보니 최초일자가 5월19일

 

시작날짜만 보면 근 11일정도하고 영문키보드까진 됐는데

 

만들어야지 하고 이글 저글 스크랩만 해뒀던게 5월초부터니

 

근 한달간 공부는 키보드관련만 하고있었다

 

그렇게 근 한달정도된 프로젝트 진행 소스는 아래에 있다.

 

https://github.com/wiwi-git/FirstKeyboard

 

wiwi-git/FirstKeyboard

키보드 만들어보기... Contribute to wiwi-git/FirstKeyboard development by creating an account on GitHub.

github.com

키보드 디자인은 최대한 기본 키보드UI에서 벗어나질 않으려고 했고

 

기본 키보드를 쓰면서 제일 불편했던 숫자부분과 특수문자부분을 바로 입력가능하도록한 프로젝트였으나

 

여기까지 만들어놓고보니

 

한글을 입력하면!

 

자음, 모음이 하나씩 들어간다

 

합쳐지질 않는다

 

 

몰랐다.

 

 

새로운걸 알게되서 좋긴하나

 

어떻게 해야할지 모르겠다

 

조합하는거 자체는 어느 고마우신분이 c#으로 작성해둔게 있어서 Swift 소스로 바꿨는데

이걸 어떻게 입력이 들어가야할지 막막해져서 

 

원래는 완성되면 올리려고한 포스트를 진행상황과 자모 합하는 함수 저장용으로 이 포스트를 남긴다.

 

아래 주소는 네이버 닉 골드러쉬님이 c#으로 12년도에 작성한 포스트이다.

m.blog.naver.com/goldrushing/130145910594

 

[C#] 한글 자음/모음 조합하기.

참조: 데브피아 (http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEUL...

blog.naver.com

 

이걸 swift로 변환하면 이렇게된다.

 

let cho:[Character] = ["ㄱ","ㄲ","ㄴ","ㄷ","ㄸ","ㄹ","ㅁ","ㅂ","ㅃ","ㅅ","ㅆ","ㅇ","ㅈ","ㅉ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ"]

let jung:[Character] = ["ㅏ", "ㅐ", "ㅑ", "ㅒ", "ㅓ", "ㅔ", "ㅕ", "ㅖ", "ㅗ", "ㅘ", "ㅙ", "ㅚ", "ㅛ", "ㅜ", "ㅝ",
                        "ㅞ", "ㅟ", "ㅠ", "ㅡ", "ㅢ", "ㅣ"]
let jong:[Character] = [" ", "ㄱ", "ㄲ", "ㄳ", "ㄴ", "ㄵ", "ㄶ", "ㄷ", "ㄹ", "ㄺ", "ㄻ", "ㄼ", "ㄽ", "ㄾ", "ㄿ",
                        "ㅀ", "ㅁ", "ㅂ", "ㅄ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ"]
func hangle(c1:Character,c2:Character,c3:Character) -> Character? {
    var cho_i = 0
    var jung_i = 0
    var jong_i = 0
    for i in 0 ..< cho.count {
        if cho[i] == c1 { cho_i = i }
    }
    
    for i in 0 ..< jung.count {
        if jung[i] == c2 { jung_i = i }
    }
    
    for i in 0 ..< jong.count {
        if jong[i] == c3 { jong_i = i }
    }
    
    let uniValue:Int = (cho_i * 21 * 28) + (jung_i * 28) + (jong_i) + 0xAC00;
    if let uni = Unicode.Scalar(uniValue) {
        return Character(uni)
    }
    
    return nil
}

 

정확히 말하면 조금 변경했는데

변환이 안됐을때의 값을 nil값이 나오도록했고, 초성/중성/종성이 담긴 배열은 그냥 밖으로 빼버렸다.

 

분명 코드값 비교해가며 고민하신 소스일텐데 이렇게 공유해주시니 매우 감사할따름

 

 

+ Recent posts