2016-09-15 15 views
0

私のプロジェクトは非常に簡単で、私の質問を説明するだけです。ビューコントローラのビューには、UITextFieldUILabelがあります。ラベルに触れた場合、ラベルは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)) 
    } 
} 
} 
+0

あなたは 'UIView.animate'完了ブロック – Tj3n

+0

に' resignFirstResponderを() '置く試すことができ、キーボードアニメーションと私のアニメーションを同時に行うことができますか? – leizh00701

+0

次に、 'UIKeyboardWillHideNotification'を観察してそこにあなたのアニメーションを追加することができます – Tj3n

答えて

0

は、TextFieldが最初の応答者を辞任した後、約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) 
} 
関連する問題