特定のtextField
が選択されている場合のみ、ビューを移動しようとしています。私はそれを動作させましたが、今度は他のtextFieldを選択すると、他のtextFieldでも再びアクティブになります、なぜですか?特定のtextFieldが選択されている場合にのみビューを移動します。
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if self.view.frame.origin.y == 0{
self.view.frame.origin.y -= keyboardSize.height
}
}
}
func keyboardWillHide(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if self.view.frame.origin.y != 0{
self.view.frame.origin.y += keyboardSize.height
}
}
}
そして、このように私は、TextField touchDown
にaddObserver
にしようとしています:言葉で
@IBAction func didTapCertainTextField(_ sender: Any) {
NotificationCenter.default.addObserver(self, selector: #selector(CreateCardViewController.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
}
フロー:私は移動して取り扱っております。このよう
は
は私を言うことができます5つのテキストフィールドを持つ(1,2,3,4,5)
3番目のtextFieldにオブザーバを追加します。私は最初にクリックし、ビューは移動せず、3回目はクリックし、1は再びクリックして移動します。どうして?テキストフィールドがクリックされたときにビューを移動させたくありません。
@LeoDabusに適用できる汎用的な解決策を持っていることを書きましたああ..大丈夫。だから私はそれをtextField自体に加えるべきですか? –