如何在文本字段激活时触发操作
How to trigger action when textfield becomes active
我有一个由自定义单元格组成的 CollectionViewController。此时我的自定义单元格仅由 UITextFields 组成。当我在其中一个文本字段内单击以开始输入时,我想在单元格上触发动画。出于某种原因,我无法弄清楚为什么当我在 textField 中单击时我的动画没有被触发。当我遵守 UItextFieldDelegate 协议并尝试通过 DidBeginEditing 方法触发操作时,它不起作用。当我尝试通过 UIControlEvents.touchDown 触发动画时,它也不起作用。
@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)
}
而不是 textFieldDidBeginEditing
、try using textFieldShouldBeginEditing:
(并确保从该方法 return true
,因为您希望允许用户键入 :-)。
此外,由于您说该方法只有在您单击第一个选定文本字段之外的其他文本字段后才会触发,所以在显示集合视图时手动为最初选定的文本字段触发动画。
我有一个由自定义单元格组成的 CollectionViewController。此时我的自定义单元格仅由 UITextFields 组成。当我在其中一个文本字段内单击以开始输入时,我想在单元格上触发动画。出于某种原因,我无法弄清楚为什么当我在 textField 中单击时我的动画没有被触发。当我遵守 UItextFieldDelegate 协议并尝试通过 DidBeginEditing 方法触发操作时,它不起作用。当我尝试通过 UIControlEvents.touchDown 触发动画时,它也不起作用。
@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)
}
而不是 textFieldDidBeginEditing
、try using textFieldShouldBeginEditing:
(并确保从该方法 return true
,因为您希望允许用户键入 :-)。
此外,由于您说该方法只有在您单击第一个选定文本字段之外的其他文本字段后才会触发,所以在显示集合视图时手动为最初选定的文本字段触发动画。