1.) キーボードは UIWindow であり、位置はアプリケーションのメイン ウィンドウに依存します。
2.) できることは、通知UIKeyboardWillShowNotification
またはUIKeyboardWillChangeFrameNotification
メソッドの実行のいずれかで、Windows サブビューをループしてキーボードを見つけることです。私のアプリケーションの 1 つで、キーボードにサブビューを追加する必要がありました。あなたの場合、これを行うことでフレームを取得できます:
//The UIWindow that contains the keyboard view - It some situations it will be better to actually
//iterate through each window to figure out where the keyboard is, but In my applications case
//I know that the second window has the keyboard so I just reference it directly
UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
//Because we cant get access to the UIPeripheral throught the SDK we will just use UIView.
//UIPeripheral is a subclass of UIView anyways
UIView* keyboard;
//Iterate though each view inside of the selected Window
for(int i = 0; i < [tempWindow.subviews count]; i++)
{
//Get a reference of the current view
keyboard = [tempWindow.subviews objectAtIndex:i];
//Assuming this is for 4.0+, In 3.0 you would use "<UIKeyboard"
if([[keyboard description] hasPrefix:@"<UIPeripheral"] == YES) {
//Keyboard is now a UIView reference to the UIPeripheral we want
NSLog(@"Keyboard Frame: %@",NSStringFromCGRect(keyboard.frame));
}
}
3.) これが可能かどうかは完全にはわかりませんが、私が提供したコードを使用してください。keyboard
独自の変換を適用できる「UIView」にキャストされるようになりました。
これはmost
エレガントな解決策ではないかもしれませんが、私の場合はうまくいきます。
お役に立てれば !