Swift - 无法将用户手势从自定义UICollectionViewCell传递到其中的UITextField

时间:2017-08-07 21:51:52

标签: swift uicollectionviewcell becomefirstresponder

我有一个自定义UICollectionViewCell(让我们称之为MyCustomCell),其中包含用户可以添加文字的自定义UITextField(让我们称之为MyCustomField)。但是,无论我做什么,点击输入都不会从MyCustomCell到其子视图MyCustomField。以前,我有同样的安排,除了MyCustomCellUITableViewCell,而由于某种原因起作用。

现在我必须执行解决方法,无论何时点击一个单元格,单元格都会向文本字段发送becomeFirstResponder()消息。 但是,这不允许用户点击MyCustomField内的“明文”按钮,也不允许用户在文本字段中移动光标:

// function inside the MyCustomCell, called by the view controller
// whenever it thinks the user tapped on a cell:
func cellTapped()
{
    // this is an instance of MyCustomField:
    input.becomeFirstResponder();
}

有没有办法将实际手势“传递”到MyCustomField(来自MyCustomCell,或者来自管理它们的视图控制器)?

更新:这是MyCustomCell(UICollectionViewCell的子类)的视图层次结构:

view hierarchy of MyCustomCell, with the MyCustomField in it

1 个答案:

答案 0 :(得分:1)

这可能对其他有类似问题的人有所帮助:我认为@MultiColourPixel在上面的评论中是正确的,即MyCustomField和MyCustomCell之间存在隐藏的“视图”。我做的是:

  1. 备份.xib和.swift文件,以获取MyCustomCellMyCustomField的代码。
  2. 删除.xib和.swift文件。
  3. 从XCode菜单中重新创建.swift文件 - 并确保在创建作为子类的.swift文件/类的.swift文件/类时检查“创建XIB” UICollectionViewCell
  4. 将旧的xib / swift内容复制粘贴到新的xib / swift中。
  5. 它应该有效,无需明确地将becomeFirstResponder()发送到MyCustomField