2013 이전/iOS개발

[iPhone 개발] 키보드 변경에 따른 View 변환

하구루 2017. 2. 25. 16:03

iOS5로 업데이트 되면서 일본어 키보드에 보는것 처럼 입력을 보조하기 위한  줄이 생겼다.





예전에는 키보드의 크기가 동일해서 따로 처리하지 않아도 될 부분이었으나,
이번 업데이트로 인해 키보드 크기를 동적으로 대응해야 할 경우가 생기게 되었다.
이를 대응하기 위한 키보드가 변경될때마다 높이를 확인할 수 있는 방법을 소개 하겠다.
일단 키보드가 변경될때 마다 호출되는 notification을 설정해 주어야 한다.
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];

보는것처럼 UIKeyboardWillShowNotification 를 등록해 주게 되는데, 이름에서 보는것처럼 키보드가 보일때, 발생하는 notification 이다.

 이는 제일 처음 키보드가 보여질때 뿐 아니라 키보드의 언어가 바뀔때 또한 새로운 키보드가 보여지는 것이기 때문에 키보드가 바뀔때 마다 notification이 발생하게 된다.
 그리고 selector에 설정한 method를 구현하면 되는데, 그 안에서 키보드의 Rect를 구하는 방법은 다음과 같다.
- (void)keyboardWillShow:(NSNotification *)notification {
    NSLog(@"keyboard will show");
    
    CGRect t;
    [[notification.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey] getValue: &t];
}
notification의 userInfo 로 부터 UIKeyboardFrameEndUserInfoKey의 값을 가져 오게 된다.

이를 이용하면 간단히 키보드의 위치의 변경에 따라 뷰를 동적으로 관리 할 수 있을것이다.


반응형