点击UITextField

时间:2016-05-26 08:31:13

标签: ios cocoa-touch animation uitextfield

你好,

点击UITextField时,我正在尝试减少/增加键盘动画的持续时间。 我尝试了不同的东西,但我无法实现我的目标:

  1. 我尝试在textFieldShouldBeginEditing(textField: UITextField) -> Bool内设置动画持续时间,但是当我尝试调用再次调用textField.becomeFirstResponder()等的func textFieldShouldBeginEditing(textField: UITextField) -> Bool时,我得到了一个无限循环... < / p>

  2. 我在键盘显示时触发的方法中设置了动画(响应名称为NSNotification的{​​{1}}但是看起来已经太晚了

  3. 我在考虑向我的UIKeyboardWillShowNotification添加UITapGestureRecognizer,这会触发动画,但我担心它会与原生UITextField的手势识别器冲突/ p>

  4. 当我说“触发动画”时,我的意思是这样做:

    UITextField

    我现在不知道该怎么做,改变这个动画持续时间似乎很棘手。

    任何建议都会非常感激:)

1 个答案:

答案 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。