Apple のドキュメントで iPhone のキーボード バウンドを見つけましたが、iPad のキーボード バウンドを見つけることができません。手伝っていただけませんか?
4 に答える
コード内の回答全体は次のようになります。まず、通知に登録する必要があります。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
ここには他にもあります。それらも取り除く必要があることに注意してください( を使用removeObserver
)。
次に、通知を取得してサイズを取得するメソッドが必要です。サイズは、最初は回転していないことに注意してください ( がUIWindow
回転しないためです。その内容は回転します)。
- (void) keyboardDidShow:(NSNotification*)notification {
CGRect keyboardFrame = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
NSLog(@"keyboard frame raw %@", NSStringFromCGRect(keyboardFrame));
UIWindow *window = [[[UIApplication sharedApplication] windows]objectAtIndex:0];
UIView *mainSubviewOfWindow = window.rootViewController.view;
CGRect keyboardFrameConverted = [mainSubviewOfWindow convertRect:keyboardFrame fromView:window];
NSLog(@"keyboard frame converted %@", NSStringFromCGRect(keyboardFrameConverted));
}
明らかに、他の方法であなたへの参照がある場合は、mainSubviewOfWindow
それを使用してください。
iPhone の縦向きは 216 ピクセル、横向きは 162 ピクセル、iPad の縦向きは 264 ピクセル、横向きは 352 ピクセルです。これは、2010 年の US キーボードで有効です。
これらのサイズは他の言語では異なる場合があり、米国でも異なる場合があります。
ユーザーが iPad で「分割」キーボードを使用することを選択した場合、UIKeyboardDidShowNotification /* UIKeyboardDidHideNotification * 通知は発生しないことに注意してください。代わりに、表示と非表示の両方でUIKeyboardDidChangeFrameNotification通知が発生します。正確に何が起こるか (表示または非表示) を把握するには、 keyboardFrame.origin.yを分析する必要があります。
I just found it if somebody else needs it.
Keyboard Notification User Info Keys