UITableView
チャットルームのリストを表示する場所があります。また、検索バーを使用して特定のチャット ルームを見つけています。ユーザーがセルをタップすると、チャット ルームの会話に移り、メッセージとメッセージを送信するためのテキスト ボックスが表示されます。
ただし、検索バーを使用してチャット ルームを検索すると、任意のセルをタップするとセグエが行われますが、チャット ルームのレイアウトが正しくありません。会話ビュー (カスタムUITableView
) が画面全体に表示され、テキスト ボックス (下部の のすぐ上TabBar
) は表示されません。
この問題を解決しようとして、セルをタップする前にキーボードを閉じた場合、検索時に正しくセグエできることがわかったので、これはキーボードが存在する場合にのみ発生しているようです。
セグエの前にプログラムでキーボードを閉じることでこの問題を解決できると思いますが、UISearchBar
またはUITableView
.
私のターゲット プロジェクトは iOS 5.1 で、5.1 を実行する iPad 3、6.01 を実行する iPad 2、および iPhone シミュレータでこの問題を再現しました。
編集
これは、セグエに使用しているコードです
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (self.searchController.searchResultsTableView == tableView) {
self.selectedItem = [self.filteredItems objectAtIndex:[indexPath row]];
} else {
self.selectedItem = [self.items objectAtIndex:[indexPath row]];
}
[self performSegueWithIdentifier:@"segueChatRoom" sender:self];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
[self.view endEditing:YES]; // This line solves the issue
UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Custom title" style: UIBarButtonItemStyleBordered target: nil action: nil];
[[self navigationItem] setBackBarButtonItem: newBackButton];
if ([segue.identifier isEqualToString:@"segueChatRoom"]) {
[segue.destinationViewController setItem:self.selectedItem];
}
}