2013-08-15 3 views
15

키보드를 표시하거나 숨길 때를 감지하기 위해 NSNotification 옵저버를 설정하는 방법을 알고 있습니다. 이것으로 키보드의 높이를 알 수 있습니다. 키보드가 계속 표시된 상태에서 기기를 돌리면 어떻게됩니까?알림에 의존하지 않고 키보드 높이를 얻는 방법

이 새로운 상태에서 키보드의 높이를 얻는 방법이 있습니까? 키보드는 여전히 새로운 알림을 표시하고 있기 때문에 트리거되지 않습니다.

답변

13

여전히 NSNotificationCenter를 사용해야하지만 다른 키를 관찰해야합니다. 찾고있는 키는 UIKeyboardDidChangeFrameNotification이며 키보드 프레임을 변경하면 문서에 따라 즉시 게시됩니다.

+1

고마워요! 이것은 의미가 있습니다. KeyboardDidShow _ 및 _ KeyboardDidHide 알림 후에 호출됩니다. –

5

iOS 6+UIKeyboardDidShowNotification을 수신하도록 등록한 경우 방향이 변경되면 선택기가 다시 호출됩니다.

CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 

이 함께 위의 교체 :이 알림을 사용하는 경우 가로 모드에서 키보드 높이를 계산할 때

애플이 Managing the Keyboard에 대한 자신의 샘플 코드에서 사용하는 알림입니다, 그러나, 그들의 계산은 잘못 :

// Works in both portrait and landscape mode 
CGRect kbRect = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; 
kbRect = [self.view convertRect:kbRect toView:nil]; 

CGSize kbSize = kbRect.size; 
+0

키보드가 이미 표시된 경우 'UIKeyboardDidShowNotification'이 회전 할 때 호출되지 않습니다. – memmons

+0

디바이스 회전시 'UIKeyboardDidShowNotification'이 호출되지 않아이 질문을 게시해야하는 이유가 될 수 있습니다. –

+0

@SteveBarden, 분명히 이것은 iOS 6+에서만 사실입니다. 나는 나의 대답을 업데이트했다. –

관련 문제