質問

紙の上で位置とオフセットを計算しました。コードを作成してデバッグしたところ、期待どおりの結果が得られました。しかし 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;
}

...もう確認できない明らかなバグがある場合に備えてコード...

役に立ちましたか?

解決

あなたの最善の策は、おそらくのUIViewのconvertPoint:toView:です。指定されたビューが配置されている場所を見つけるために、使用します:

CGPoint myPoint = [myView convertPoint:CGPointMake(0, 0) toView:((YourAppDelegate *)[[UIApplication sharedApplication] delegate]).window];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top