1

UITableView と UITextField を持つビュー コントローラーがあります。キーボードがいつ開閉するかについての通知を購読し、キーボードの高さに関する情報を使用して、UITableView と UITextField のサイズと位置を調整します。

しかし、私には2つの問題があります。

キーボードが開くと、UITextField が自動的に位置を変更するように見えます。これは、正しく配置されていれば問題ありませんでした。タブ バー コントローラーの高さと同じ垂直方向のオフセットがあるようです。

キーボードが開いたときに UITextField がそのセルを再配置しようとするのを無効にするにはどうすればよいですか?

2番目の問題は、キーボードが開いているときに UITableView のテーブル部分が長すぎるように見えることです.テーブルの最後の要素の下までスクロールできます(キーボードの高さに似ていると思います)。キーボードが開いたら、UITableView の新しい高さを次のように設定します (kbSize はキーボードのサイズです)。

CGSize size = self.view.frame.size;
self.tableView.frame = CGRectMake(0,0f, 0,0f, size.width, size.height - kbSize.height);

ここで何が欠けていますか?フレームだけでなく、テーブルの「高さ」を設定する必要がありますか?

ありがとう、オーレ

4

2 に答える 2

3

キーボードが表示されている間に親クラスをからUIViewControllerビューUITableViewControllerのサイズ変更に変更すると、OS によって変更されます。

于 2012-04-19T17:12:39.623 に答える
1

1つのviewcontrollerクラスを取得し、キーボードがポップアップするときにtableviewを配置するだけで、y = y-140でviewcontrollerフレームを設定します...このように

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3];
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.view cache:YES];

    scrollView.frame = CGRectMake(0, -140, 320, 460);
    [UIView commitAnimations];
    return YES;
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3];
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.view cache:YES];
    scrollView.frame = CGRectMake(0, 0, 320, 460);
    [UIView commitAnimations];
    [textField resignFirstResponder];
    return YES;
}
于 2012-04-19T18:22:19.983 に答える