2012-07-03 14 views
9

グループ化された静的UITableViewを持つUITableViewControllerがあります。私はストーリーボード上の静的なテーブルビュー用のセルを定義しています。セルの1つにテキストフィールドがあります。このテキストフィールドが呼び出されると、キーボードがポップアップしますが、テーブルビューコントローラで通常どおりにテーブルビューが自動的にサイズ変更されるわけではありません。今はキーボードが部分的にテキストフィールドをカバーしていて、スクロールできません。UITableViewControllerとUITextFieldキーボード

私の理解では、UITableViewControllerとtableviewを使用している場合、キーボードが呼び出されると表示可能領域が自動的に縮小されるはずです。これは、静的なテーブルビューではなく、私のアプリの他の部分で意図されたように動作します。静的テーブルでは機能しませんか?私は行方不明の何か他のものがありますか?これを簡単に解決する方法はありますか?表形式のいずれかを編集するために選択された場合

+0

のためにあなたは、ビューを上に移動するか、手動でサイズを変更することができます。 – Dustin

+1

問題は、なぜそれが正常に実行されると自動的に実行されないのですか? – Keith

+0

おそらくあなたが推測したように静的なテーブルビューを使用しているからです。静的テーブルビューは特に変更されないように設計されています。そのため、これらのビューは「静的」と呼ばれています – Dustin

答えて

48

回答

それは、静的な細胞とは何の関係もありません。彼らはうまくいくはずです。

コントローラがすでにUITableViewControllerである場合は、viewWillAppearというメソッドを使用したかどうかを確認してください。あなたがした場合は、[super viewWillAppear:YES]に電話をして、「自動動作」を動作させる必要があります。コントローラの定型コードがviewWillAppearメソッド呼び出しが付属していませんし、あなたのコントローラでそれを定義した場合、あなたはそれをオーバーライドするため

-(void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:YES]; // This line is needed for the 'auto slide up' 
    // Do other stuff 
} 

この問題は簡単になります。このリンクで

追加情報

ルック。

Apple Table View Programming Guide

注:のUITableViewControllerはiOSの3.0の新機能を備えています。 A テーブルビューコントローラは、テーブルビュー行のインライン編集をサポートしています。例えば は、行は 表示....何とか仮想キーボードの上に編集さ スクロール行....

重要ビット、編集モードに埋め込まれたテキストフィールドを持っている場合

のUITableViewControllerクラスは のUIViewControllerから継承 オーバーライドloadViewメソッド、viewWillAppear :,および他の方法によって、上述の動作を実現します。 UITableViewControllerのサブクラスでは、 もこれらのメソッドをオーバーライドして特殊な動作を取得できます。これらのメソッドを でオーバーライドする場合は、メソッドの実装のスーパークラス を呼び出して、通常は最初のメソッド呼び出しとして をデフォルトの動作にするようにしてください。

+0

私は静的なテーブルとは何の関係もないことをここに書きました。私はテスト用の静的テーブルを作成し、それは正常に動作したので、それは私のコードで何か知っていた。あなたは100%正しいです。それは[super viewWillAppear:YES];でした。すぐに私は私のviewWillAppearearにそれを加えました。私はそれがどのように削除されたかを推測する。私は今週の修正を恐れていて、それは本当に簡単だと判明しました。おかげで – Keith

+1

乾杯男。あなたの質問は私に文書を指して、別のものを学んだ。=) –

+1

偉大な答えは、あなたが投票以上に手口を持っていないスキャンダル。とにかくこれは1つです。 –

0

ビューを押し上げ

おかげ(キーボード通知実装を必要とする)

- (void) keyboardDidShow:(NSNotification *)aNotification 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.25]; 
    self.view.center = CGPointMake(self.view.center.x, self.view.center.y-moveAmount); 
    [UIView commitAnimations]; 
    isRaised = [NSNumber numberWithBool:YES]; 
} 

(2によって高さを分割する)テーブルのサイズを変更します。これをキーボードの表示方法に入れ替えます。また、keyboard did hideメソッドを使用して、この処理を元に戻すこともできます。

CGRect temp = CGRectMake(mineTable.frame.origin.x, mineTable.frame.origin.y, mineTable.frame.size.width, mineTable.frame.size.height/2); 
mineTable.frame = temp; 
+1

これは完全な回答ですか?いくつかのものが欠けているようです。 – Keith

+0

まあ、私はあなたがすでにコードする方法を知っているたくさんのものをあなたに見せたくありませんでした。私は何をすべきかを教えてくれました(キーボード通知を実装する)。正しい方向に向けるためのコード例です。 – Dustin

1

はスウィフト

override func viewWillAppear(animated: Bool) { 

    super.viewWillAppear(animated) 

} 
関連する問題