紙の上の位置とオフセットを計算しました。コードを記述してデバッグし、期待どおりの結果が得られるようにしました。ただし、iPhoneシミュレーターでは、物事が約15ピクセル重なっています。
デバッグを続行するには、UIオブジェクトが画面のどこにあるかを正確に知る必要があります。
ポップアップ検索キーボードと、静的UISearchBarと動的に追加されたUITabBarの間のUITableViewのサイズ変更に関連します(テーブルビューはタブの1つに埋め込まれます)。いいえ、回転や画面サイズの違いにより、ハードコードされた値は使用したくありません。
どうすればこれを見つけることができますか?
- (void)keyboardWasShown:(NSNotification*)aNotification
{
if (self.keyboardShown)
return;
// Get keyboard dimensions
NSDictionary* info = [aNotification userInfo];
NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];
CGSize kbSize = [aValue CGRectValue].size;
NSValue* endValue = [info objectForKey:UIKeyboardCenterEndUserInfoKey];
CGPoint endCenter = [endValue CGPointValue];
CGRect frame = myView.frame;
frame.size.height = endCenter.y - kbSize.height/2 - frame.origin.y;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.2];
myView.frame = frame;
[UIView commitAnimations];
self.keyboardShown = YES;
}
...私がもう見ることができない明らかなバグがある場合に備えてコードを書いてください...