0

私のアプリには、ナビゲーション バー、タブ バー、検索バーがあり、常にキーパッドを表示しています。

しかし、iPhone 5 では画面の高さが異なるため、テーブルの高さを調整する必要があります。

これは実行時に表示されるため、テーブルをキーパッドの上部に固定できません。

だから私はこれを動的にしようとしています.検索バーが欠けているようです.短すぎます.うーん.

おそらく、より簡単で明白な方法がありますか?

編集:これまでの私のコード。

-(void)keyboardWillShow:(NSNotification*)aNotification {

int th = self.view.frame.size.height;

NSDictionary *info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] 
      CGRectValue].size;

int tableTop;
int tableHeight;

tableTop = table.frame.origin.y;

tableHeight = (th - tableTop) - kbSize.height;

[table setFrame:[General setTableBoundsByHeight:tableHeight:table]];

}

+ (CGRect)setTableBoundsByHeight:(int)lHeight:(UITableView*)tbl {

    CGRect tableFrame = tbl.frame;

    return CGRectMake(tableFrame.origin.x,
                                   tableFrame.origin.y,
                                   tableFrame.size.width,
                                    lHeight);
}
4

1 に答える 1

2

あなたの「tableView」は「self.view」の一部だと思います。そうであれば、それは別の座標系にあります。

キーボードがウィンドウに追加され、tableView がビュー階層に追加されます。ここで説明されている関数を使用する必要があります:ビュー座標系間の変換

編集: UIKeyboardFrameEndUserInfoKey のドキュメントを読むと、四角形が画面座標にあることがわかりますが、 UITableView はほぼ確実に他のビュー座標系にあります。同じドキュメントで、彼らは 2 つの間で変換する関数について言及しました。

于 2012-10-26T12:52:22.397 に答える