你好,
点击UITextField
时,我正在尝试减少/增加键盘动画的持续时间。
我尝试了不同的东西,但我无法实现我的目标:
我尝试在textFieldShouldBeginEditing(textField: UITextField) -> Bool
内设置动画持续时间,但是当我尝试调用再次调用textField.becomeFirstResponder()
等的func textFieldShouldBeginEditing(textField: UITextField) -> Bool
时,我得到了一个无限循环... < / p>
我在键盘显示时触发的方法中设置了动画(响应名称为NSNotification
的{{1}}但是看起来已经太晚了
我在考虑向我的UIKeyboardWillShowNotification
添加UITapGestureRecognizer
,这会触发动画,但我担心它会与原生UITextField
的手势识别器冲突/ p>
当我说“触发动画”时,我的意思是这样做:
UITextField
我现在不知道该怎么做,改变这个动画持续时间似乎很棘手。
任何建议都会非常感激:)
答案 0 :(得分:3)
一个简单的解决方案,覆盖了becomeFirstResponder,只记得做一些检查。
实施例
class MyTextField: UITextField{
override func becomeFirstResponder() -> Bool {
// guard clause
if(!self.canBecomeFirstResponder()) { return false }
UIView.animateWithDuration(1.0, animations: {
super.becomeFirstResponder()
})
return true;
}
}
只需将动画参数修改为您喜欢的任何内容,并将TextField替换为此MyTextField。