IOS检测触摸解除键盘?

时间:2013-07-16 23:40:33

标签: ios uiview keyboard dismiss

我试图弄清楚如何在用户点击UITextField之外时关闭键盘并触发方法

TableViewCell.m中的

-(void)textFieldDidBeginEditing:(UITextField *)textField
{
    [self.delegate cellDidBeginEditing:self];
}
ViewController.m中的

-(void)cellDidBeginEditing:(TableViewCell *)editingCell
{
_editingOffset = _tableView.scrollView.contentOffset.y - editingCell.frame.origin.y;
for (TableViewCell *cell in [_tableView visibleCells]) {
    [UIView animateWithDuration:0.3
                     animations:^{
                         cell.frame = CGRectOffset(cell.frame, 0, _editingOffset);
                         if (cell != editingCell) {
                             cell.alpha = 0.25;

                         }
                    }];  
    } 
}

cellDidBeginEditing:方法将单元格置换为顶部,并将其他单元格置为灰色。

我有另一个方法,cellDidEndEditing:与此相反,并且实际上不需要代码。

截至目前,在编辑“cell1”时选择“cell2”只会触发“cell2”的cellDidBeginEditing

当我点击“cell1”之外时,我希望键盘解除并触发cellDidEndEditing

1 个答案:

答案 0 :(得分:1)

尝试实现并调用这些函数:

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

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [self.firstTextField resignFirstResponder];
    [self.secondTextField resignFirstResponder];
    return YES;
}

这应该使得当你触摸两个textFields之外的任何位置时,键盘会自动解除。