0

我试图弄清楚当用户在 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

4

1 回答 1

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;
}

这应该使得当您触摸两个文本字段之外的任何位置时,键盘会自动关闭。

于 2013-07-16T23:54:52.747 回答