私はプレイヤーを表すカスタムセルを持つUITableViewを持っています。新しいプレーヤーを追加すると、新しいデータアイテムが追加され、[UITableView reloadData]が呼び出されます。セルの一部は、プレーヤー名を含むUITextViewです。どのようにキーボードを持ち上げるのですか?UITableViewのセルのキーボードを起動しますか?
セル内のUITextViewにアクセスできたのに、実際にまだ作成されていない場合は、becomeFirstResponderを使用できます。 reloadDataは実際にはまだ新しいセルの作成を実行していないためです。
誰かがこれを解決する必要があります。どのようにこの仕事をする上でのヒントは非常に高く評価されるでしょう。
私のコードスニペットは:
-(IBAction)addPlayerPressed:(id)sender {
Player *newPlayer = [Player alloc];
[players addObject:newPlayer];
[table reloadData];
// Scroll to bottom showing the new player location
NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:([players count] - 1) inSection:0];
[table scrollToRowAtIndexPath:scrollIndexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
// cell is always nil :(
PlayerTableCell *cell = (PlayerTableCell *)[table cellForRowAtIndexPath:scrollIndexPath]
[cell.nameField setfirstResponder];
}
完璧に動作します!助けてくれてありがとう!!! –
私はそれを取り戻す、この修正は真剣にUITableViewを破るようだ。いくつかの行を追加したり削除したりすると、表示が非常に混乱します。私のデータセットとレンダリングとして報告された実際のセルは正しく表示されますが、ディスプレイ自体には重複したエントリが表示されます。キーボードが通常の機能に復帰することを示すコードをコメントアウトする。 :( –