このことは、5日間私を怒らせています。インターネットから取得したデータが含まれているUITableView
ものがあります。NSMutableDictionary
すべてが完璧に機能します。
[NSURLRequest sendAsynchronousRequest...]
何か新しいものがある場合に実際にデータを返す新しいデータをチェックする関数があります。有用なデータがある場合は、そのデータを辞書に追加し[self.tableView reloadData];
て表示するように慎重に作成しました。表示されていますが、ここに問題があります。私のtableViewの下には、textFieldと、ユーザーがメッセージを送信できるボタンがあります。ユーザーがテキスト フィールドをタップすると、(通常は) キーボードが表示され、textField が「上」に移動し、ボタンが「上」に移動し、tableView の高さがキーボードをオンにした状態で表示されるようにアニメーション化します。キーボードのリターンを押すと、キーボードが辞任し、すべてが元に戻ります。それだけです。
問題は、キーボードがオンになっていて、すべてが上に移動し、 iに移動するとreloadData
、すべてのビューがリセットされ、つまり、tableView が完全な高さに戻り、ボタンが下に戻り、textField が下に戻りますが、キーボードはそのままです...なぜ? ビューが自動的にリセットされるのはなぜですか?
私も[self.tableView insertRowsAtIndexPaths...]
その効果を生まない思考を使ってみましたが、同じことをします. reloadData
とinsertRowsAtIndexPaths
(新しいデータを挿入する仕事をうまく行っている) が私のビューをめちゃくちゃにするのはなぜですか?
また、印刷する場合:
NSLog(@"Size Before: %f", self.tableView.frame.size.height);
[messages setObject:[newMessages objectForKey:key] forKey:date];
messagesKeys = [messages allKeys];
NSIndexPath *oNewIndexPath = [NSIndexPath indexPathForItem:[messagesKeys count] - 1 inSection:0];
[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:oNewIndexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView endUpdates];
NSLog(@"Size After: %f", self.tableView.frame.size.height);
更新前後のテーブルビューのサイズは、同じ縮小されたサイズを示していますが、そうではありません。TableView、ボタン、および textField がリセットされ、ストーリーボードのように見えます...