2012-04-19 29 views
1

私はUITableViewとUITextFieldを持つビューコントローラを持っています。キーボードが開いたり閉じたりするときの通知を購読し、キーボードの高さに関する情報を使用して、UITableViewとUITextFieldのサイズと位置を調整します。キーボードが表示され、隠されているときのテーブルビューのサイズ変更

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

キーボードが開くと、UITextFieldが自動的に再配置されているように見えます。正しく配置されていれば問題ありません。 Tab Bar Controllerの高さと同じ垂直オフセットがあるようです。

キーボードが開いたときにUITextFieldがreelistionしようとすると、どのように無効にしますか?

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

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

は、私はここで何をしないのですか?どういうわけか、フレームだけでなく、テーブルの「高さ」を設定する必要がありますか? 、オレ

答えて

3

キーボードが現れている間、あなたの親クラスがUIViewControllerからUITableViewControllerにビューのサイズ変更を変更した場合は、その後、OSによって行われます

感謝。キーボードは、Y = Y-140とのViewController枠を設定冗談が開かれますときに、ちょうど1つのViewControllerクラスを取り、プット・テーブルビュー内の

1

......この

-(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; 
} 
よう
関連する問題