Swift textfield激活时如何触发操作
我有一个由自定义单元格组成的CollectionViewController。此时,我的自定义单元格仅由UITextFields组成。当我在其中一个文本字段内单击开始键入时,我想触发单元格上的动画。由于某些原因,我无法理解为什么在文本字段中单击时动画没有被触发。当我遵守UItextFieldDelegate协议并尝试通过DidBeginEditing方法触发操作时,它不起作用。当我尝试通过uicontrol事件.触地触发动画时,它也不工作Swift textfield激活时如何触发操作,swift,uicollectionview,uitextfield,custom-cell,Swift,Uicollectionview,Uitextfield,Custom Cell,我有一个由自定义单元格组成的CollectionViewController。此时,我的自定义单元格仅由UITextFields组成。当我在其中一个文本字段内单击开始键入时,我想触发单元格上的动画。由于某些原因,我无法理解为什么在文本字段中单击时动画没有被触发。当我遵守UItextFieldDelegate协议并尝试通过DidBeginEditing方法触发操作时,它不起作用。当我尝试通过uicontrol事件.触地触发动画时,它也不工作 @objc func animateCell(textF
@objc func animateCell(textField: UITextField) {
print("TextField active")
let cell = collectionView.cellForItem(at: indexPath)
UIView.animate(withDuration: 0.5, delay: 0, options: .allowAnimatedContent, animations: ({
cell?.frame = collectionView.bounds
collectionView.isScrollEnabled = false
}), completion: nil)
}
而不是
textfielddibeginediting
,(请确保从该方法返回true
,因为您希望允许用户键入:-)
此外,由于您说在单击第一个选定文本字段之外的其他文本字段之前,该方法不会启动,因此在显示集合视图时手动启动初始选定文本字段的动画 是否有任何文本字段委托方法有效?您是如何设置UITextFieldDelegate的&在哪里设置的?我将CustomCollectionViewCell设置为UITextFieldDelegate。确实如此,但显然,直到您开始键入,didBeginEditing方法才会被调用。我需要动画触发,只要我在文本字段内点击@MichaelDautermanntry应该改为开始编辑。
TextFieldDidBeginEdit
的文档说明:“此方法通知代理指定的文本字段刚刚成为第一响应者。”。因此,当文本字段获得焦点时调用它,而不是当用户实际开始键入时调用它。嗯,好的,那一定是我的问题所在,然后@rmaddy。我想我会研究一下。这也不起作用,在我点击另一个文本字段/单元格之前,该方法不会触发@MichaelDautermann@MichaelDautermann在显示collectionView时手动触发动画的唯一问题是,我的collectionView中有100个单元格,我需要为每个单元格单独选择动画来触发。我只是说为第一个单元格手动触发动画(因为听起来第一个单元格的文本字段可能会在集合视图首次出现时设置为第一响应者)。然后,textfield应该开始编辑,
应该会在用户从一个单元格到另一个单元格单击时触发您的动画。或者我完全误解了您的UI吗?