我的项目很简单,只是为了解释我的问题。在视图控制器的视图中,有UILabel
和M_PI
。如果我触摸标签,则标签会旋转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))
}
}
}
,文本字段将退出第一个响应者。如果文本字段未成为第一响应者,则标签将按预期旋转。但是如果文本字段成为第一个响应者并且键盘出现。点击标签时,它会跳转到没有动画的结束变换。
我在Xcode8中编写了该代码,swift 3.0
代码是:
{{1}}
答案 0 :(得分:0)
在文本字段重新启动其第一个响应者后约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)
}