iOS - 从UITextField转移到另一个不会启动第二个

时间:2013-06-02 10:44:40

标签: ios uitextfield uitextfielddelegate

以下是用户界面: 我有一个包含文本字段的行的表视图。例如,row1具有textField1,而row2具有textField2。

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

然后,如果用户点击textField2,则只为textField1调用textFieldDidEndEditing:。不为textField2调用textFieldDidBeginEditing:(我很确定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];

}

2 个答案:

答案 0 :(得分:0)

首先,如果要在变量末尾添加label,请注意命名约定,该变量应为UILabel而不是UITextField。第二个问题可能出在textFieldDidEndEditing方法中,您在所有文本字段上调用resignFirstResponder(如果cell.priceLabel是文本字段)。您不应在resignFirstRespondertextFieldDidEndEditing中致电textFieldSouldReturn,因为如果调用这些方法,则文字字段已经作为第一响应者辞职。

答案 1 :(得分:0)

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

这不是一个解决方案,它不提供最好的用户体验。它仍然有效。