【问题标题】:Dismiss keyboard while other view is animating在其他视图动画时关闭键盘
【发布时间】:2017-01-22 22:56:36
【问题描述】:

我的项目很简单,只是为了解释我的问题。在视图控制器的视图中,有一个UITextField 和一个UILabel。如果我触摸了标签,标签会旋转M_PI,并且文本字段会退出第一响应者。如果文本字段没有成为第一响应者,则标签按预期旋转。但是如果文本字段成为第一响应者并且键盘出现。当标签被点击时,它会跳转到没有动画的结束变换。

我在 Xcode8,swift 3.0 中编写了该代码

代码是:

class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var textField: UITextField!

@IBOutlet weak var label: UILabel!

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
    UIView.animate(withDuration: 0.25) {
        self.label.transform = .identity
    }

    return true
}

@IBAction func labelTapped(_ sender: AnyObject) {
    textField.resignFirstResponder()
    UIView.animate(withDuration: 0.25) { 
        self.label.transform = self.label.transform.rotated(by: CGFloat(M_PI))
    }
}
}

【问题讨论】:

  • 您可以尝试将resignFirstResponder() 放在UIView.animate 完成块上
  • 键盘动画和我的动画可以同时做吗?
  • 然后你可以观察UIKeyboardWillHideNotification并在那里添加你的动画

标签: ios swift animation keyboard


【解决方案1】:

尝试在文本字段退出其第一响应者后延迟约 0.5 秒后执行动画。

func animate() -> Void {
    UIView.animate(withDuration: 0.25) {
        self.label.transform = self.label.transform.rotated(by: CGFloat(M_PI))
    }
}

@IBAction func labelTapped(_ sender: AnyObject) {
    textField.resignFirstResponder()
    NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: #selector(ViewController.animate), userInfo: nil, repeats: false)
}

【讨论】:

    猜你喜欢
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多