본문 바로가기

iOS Programming

iOS 키보드 뷰 객체 가져오기.

오늘 문득 iOS 키보드 표면위에 뷰를 하나 얹을 수 없을까 하는 의문이 들었습니다.

몇 번 시도해보다 안되나 싶어 포기하고 있는데

페친인 강명수님 (https://www.facebook.com/montesoul) 이 자료를 찾아 주신 도움으로 해결하였습니다.


찾아주신 자료는 http://www.cocoawithlove.com/2009/04/showing-message-over-iphone-keyboard.html?m=1 이거였는데 아주 오래전 4.0 이전 버전에만 작동되는 코드인거 같습니다.


제가 약간의 수정으로 iOS 7.0에서 키보드 뷰 핸들을 가져오도록 했는데요, 6.0과 5.0 에서는 테스트를 해보지 못했습니다.


수정된 코드는 아래와 같습니다.




 - (UIView *)keyboardView

{

    NSArray *windows = [[UIApplication sharedApplication] windows];

    for (UIWindow *window in [windows reverseObjectEnumerator])

    {

        for (UIView *view in [window subviews])

        {

            if (!strcmp(object_getClassName(view), "UIKeyboardAutomatic"))

                return view;

UIView *kview = [self findKeyboardView:view];

if(kview)

return kview;

        }

    }

    

    return nil;

}


- (UIView *)findKeyboardView:(UIView *)parent

{

for (UIView *view in parent.subviews)

{

if (!strcmp(object_getClassName(view), "UIKeyboardAutomatic"))

return view;

[self findKeyboardView:view];

}

    

    return nil;

}




// 키보드 뷰 가져오기

UIView *kview = [self keyboardView];