我的UICollectionViewCell
有一个文本字段,当我单击该单元格时,我可以编辑该文本字段,但是未调用didSelectItemAt
的{{1}}函数。我该如何克服?
UICollectionViewDelegate
这是collectionView函数
class LetterCell: UICollectionViewCell {
@IBOutlet weak var singleLetterTextField: UITextField!
@IBAction func textDidChange(_ sender: Any) {
if ((singleLetterTextField.text?.count)! > 1) {
singleLetterTextField.text = String((singleLetterTextField.text?.last)!)
}
}
}
我已经将委托和数据源设置为控制器。
答案 0 :(得分:0)
didSelect
将起作用。 didSelect
,则需要在textField didBeginEditing
中进行计算。一个基本的技巧是将索引路径的值设置为textfield
中cellForItemAt
的标记或其他属性(例如,选中)。您也可以创建自定义文本字段。这是您的cellForItemAt
的更新:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCell(withReuseIdentifier: "LetterCell", for: indexPath) as! LetterCell
cell.singleLetterTextField.text = data[row][column]
cell.singleLetterTextField.tag = indexPath.row//then you can use this tag to form indexPath and with that you can retrieve cell (if it's still visible)
increaseRowColumn()
return cell
}
答案 1 :(得分:-1)
第一
singleLetterTextField.isUserInteractionEnabled = false
然后在didSelectItemAt
cell.singleLetterTextField.becomeFirstResponder()