textFieldDidEndEditing vs didSelectRowAtIndexPath,后者未被调用

时间:2016-08-05 15:05:15

标签: ios uitableview uitextfield

我有一个UITextFieldUITableView的视图。当用户输入文本时,我希望调用didSelectRowAtIndexPath,但不幸的是,它不是。似乎文本字段的焦点阻止了didSelectRowAtIndexPath被调用。

我找到的第一个解决方案是创建一个手势识别器并检查事件坐标是否在表格内,然后检查哪一行。但我想提出一个更简单的解决方案,我可能会遗漏一些东西。

编辑:文本字段不在单元格内,在表格之外,您建议的答案就像在单元格内一样。

3 个答案:

答案 0 :(得分:1)

调用textFieldDidBeginEditing时,您可以获取单元格行,然后根据需要使用它:

func textFieldDidBeginEditing(textField: UITextField) {
    let currentCell = textField.superview!.superview! // Get the cell
    let indexPath = tableView.indexPathForCell(currentCell)
    let currentRow = (indexPath?.row)! // Get the row of that cell
}

答案 1 :(得分:0)

在cellForRow中,将UITextField的标记设置为indexPath.row。现在,当您的文本字段开始编辑时,您将拥有索引路径的行,并且可以根据需要获取cellForRow。将“didSelectRowAtIndexPath”函数逻辑放在一个单独的函数中,并从didSelect和beginEditing中调用该新函数。

答案 2 :(得分:-1)

在uitableview的cellForRowAIndexPath方法中编写代码,防止来自didSelectForRowAtIndexPath cslled方法。

tableview.selectiostyle = UItableviewSelectionStayle.None