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]; |