0

这是 UI:我有一个包含文本字段的行的表格视图。例如 row1 有 textField1 而 row2 有 textField2。

现在,如果用户点击 textField1,一切正常。代表被称为和一切。

然后,如果用户点击 textField2,则只会textFieldDidEndEditing:为 textField1 调用 。textFieldDidBeginEditing:不为 textField2 调用(我很确定 textField2 委托已设置,因为当我(再次)点击 textField2 时,它开始编辑(textFieldDidBeginEditing:现在调用)

你可能认为这不是一个真正的问题。问题是iOS一直显示键盘!没有与之关联的文本字段!我什至循环到所有可见行中的所有文本字段并在没有运气的情况下将它们辞职。

似乎是iOS中的一个错误,对吧?

编辑:这是委托中的代码

   - (void) textFieldDidBeginEditing:(UITextField *)textField {

    [self fixTableViewOffsets];

    RSMCellEditPricesCell *cell = (RSMCellEditPricesCell *) [[textField superview] superview];
    [self.tableView scrollToRowAtIndexPath:[self.tableView indexPathForCell:cell]
                          atScrollPosition:UITableViewScrollPositionTop
                                  animated:YES];

}

- (void) textFieldDidEndEditing:(UITextField *)textField {

    self.currentPriceTextField = nil;
    [self fixTableViewOffsets];
    [self.tableView reloadData];

}
4

2 回答 2

0

首先,请注意命名约定,如果要label在变量末尾添加 a ,则该变量应该是 aUILabel而不是 a UITextField。其次,您的问题可能出在textFieldDidEndEditing方法中,您正在调用resignFirstResponder所有文本字段(如果 cell.priceLabel 是文本字段)。您不应该调用resignFirstRespondertextFieldDidEndEditing或者textFieldSouldReturn因为如果调用了这些方法,则文本字段已经辞去第一响应者的职务。

于 2013-06-02T15:15:12.010 回答
0

我找不到解决办法。但是,作为一种解决方法,我禁用了第二个文本字段。当用户点击此字段时,它将触发单元格上的触摸事件,而不是将关闭键盘的文本字段。然后,我启用所有文本字段,用户可以再次选择第二个文本字段。

这不是一个很好的解决方案,也没有提供最好的用户体验。尽管如此,它仍然有效。

于 2013-06-04T06:14:14.050 回答