ios - 点击 UITextField 时更改键盘动画持续时间

标签 ios cocoa-touch animation uitextfield

你好呀,

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

  • 我尝试在 textFieldShouldBeginEditing(textField: UITextField) -> Bool 中设置动画持续时间,但是当我尝试调用 textField.becomeFirstResponder() 时出现了无限循环再次调用func textFieldShouldBeginEditing(textField: UITextField) -> Bool等等...
  • 我在键盘要显示时触发的方法中设置了动画(响应名称为 NSNotificationUIKeyboardWillShowNotification )但看起来为时已晚
  • 我正在考虑添加 UITapGestureRecognizer给我的UITextField这会触发动画,但我担心它会与原生 UITextField 冲突的手势识别器

  • 当我说“触发动画”时,我的意思是做这样的事情:
    UIView.animateWithDuration(10.0, animations: {
                textField.becomeFirstResponder()
            })
    

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

    任何建议将不胜感激:)

    最佳答案

    一个简单的解决方案,覆盖 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 替换为 This MyTextField。

    关于ios - 点击 UITextField 时更改键盘动画持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37455531/

    相关文章:

    ios - 将端点解析为用户名/密码

    android - 从其他 View 的位置动画/平移 View

    JavaScript 动画动态返回元素上的位置

    ios - 应用程序不会注册从第一个 ViewController 传递的值

    ios - 以编程方式设置 Xcode 模拟器、键盘和 Touch ID 设置,用于 UI 测试

    ios - 通过Testflight中的错误在同一版本下上传新构建

    iOS 在应用程序 :didReceiveRemoteNotification isn't triggered 时在 applicationDidBecomeActive 上检索推送通知

    iphone - 将 double 限制为两位小数,不带尾随零

    iOS 8.3 SDK 在强制属性声明和区分大小写方面发生了变化

    javascript - 普通 JavaScript 中的滚动动画仅适用于导航链接