0

紙の上の位置とオフセットを計算しました。コードを記述してデバッグし、期待どおりの結果が得られるようにしました。ただし、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;
}

...私がもう見ることができない明らかなバグがある場合に備えてコードを書いてください...

4

1 に答える 1

1

あなたの最善の策はおそらくUIViewのconvertPoint:toView:です。特定のビューがどこにあるかを確認するには、次を使用します。

CGPoint myPoint = [myView convertPoint:CGPointMake(0, 0) toView:((YourAppDelegate *)[[UIApplication sharedApplication] delegate]).window];
于 2010-01-27T20:45:27.253 に答える