没有单元格时单击UITableView的方法,以便键盘将被关闭

时间:2013-08-01 08:39:21

标签: iphone ios objective-c

在屏幕上,用户可以单击文本字段以加载选择器以选择位置。然后,我根据此位置使用自定义单元格重新加载tableview中的所有元素。对于某些地方,可能没有任何东西可以加载,因此没有单元格。

当我有单元格并且用户点击键盘时,这部分代码会被很好地命中:

-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self.locationTextField resignFirstResponder];

    ...
}

我还有一段很好地处理不点击任何内容的代码

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.view endEditing:YES];
}

但是当tableview没有单元格时,当用户单击tableview的空间时,这些单元格都不会被触发。我可以设置其他东西来检测该区域的触摸吗?

1 个答案:

答案 0 :(得分:2)

您可以尝试使用UITapGestureRecognizer并将其添加到表格视图中。 像这样:

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tableViewTap:)];
[self.myTableView addGestureRecognizer:tapRecognizer];

然后:

-(void) tableViewTap:(UIGestureRecognizer*)recognizer 
{
    CGPoint tapLocation = [recognizer locationInView:self.myTableView];
    NSIndexPath *indexPath = [self.myTableView indexPathForRowAtPoint:tapLocation];

    if (indexPath) //user tapped on a table cell
         recognizer.cancelsTouchesInView = NO;
    else //user tapped somewhere else on the table view
    {
        //your stuff here
    }
}