我有UITableView
我在其中显示聊天室列表。我也在使用搜索栏找到特定的聊天室。当用户点击一个单元格时,它会切换到聊天室会话,显示消息和发送消息的文本框。
但是,如果我使用搜索栏搜索聊天室,当我点击任何单元格时,segue已完成,但聊天室的布局错误。对话视图(自定义UITableView
)填充整个屏幕,文本框(位于TabBar
顶部,位于UISearchBar
顶部)不会出现。
试图解决这个问题,我发现在搜索时我能够正确地查看是否在点击任何单元格之前解除了键盘,所以看起来只有在键盘存在时才会发生这种情况。
我想我可以解决这个问题,在编辑前以编程方式解雇键盘,但我也担心我可能会对UITableView
或- (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];
}
}
做错事。
我的目标项目是iOS 5.1,我在运行5.1的iPad 3,运行6.01的iPad 2和iPhone模拟器中重现了这个问题。
修改
这是我用来代替的代码
{{1}}
答案 0 :(得分:1)
正如您已经指出的那样,您需要重新启动第一个响应者(降低键盘)。你的[self.view endEditing:YES];基本上是这样做的。