В моем UIViewController есть два UITextField внизу. Итак, на клавиатуре я пытаюсь двигаться дальше. Ниже приведен мой код для обработки клавиатурыUIKeyboardDidShowNotification вызывается дважды
override func viewWillAppear(animated: Bool) {
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardShown:", name: UIKeyboardDidShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardHidden:", name: UIKeyboardDidHideNotification, object: nil)
}
override func viewWillDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardDidShowNotification, object: nil)
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardDidHideNotification, object: nil)
}
// MARK: - Handling Notification
func keyboardShown(notification: NSNotification){
if let initialFrame = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.CGRectValue() {
let convertedFrame = self.view.convertRect(initialFrame, fromView: nil)
iY = viewLogin.frame.origin.y
var currentFrame = viewLogin.frame
currentFrame.origin.y = convertedFrame.origin.y - 140
self.viewLogin.frame = currentFrame
UIView.animateWithDuration(0.2, animations: {() -> Void in
})
}
}
func keyboardHidden(notification: NSNotification){
var currentFrame = viewLogin.frame
currentFrame.origin.y = iY
UIView.animateWithDuration(0.2, animations: {() -> Void in
self.viewLogin.frame = currentFrame
})
}
Он отлично работает для первого UITextField. Но, когда я пытаюсь перейти к второму UITextField, снова вызывается функция keyboardShown(), и мое представление перемещается назад. Я не могу определить фактическую причину. Пожалуйста, дайте мне знать, если я ничего не пропущу.
Заранее спасибо
Извините. Я не понимаю, о чем вы спрашиваете? Я использую делегат UITextField для отставки клавиатуры с помощью UITextField.resignFirstResponder() –
Я не использую эти методы UITextFieldDelegate. Я использую уведомление по клавиатуре. –
, если вы не используете делегатов uitextfield, тогда вам нужно будет установить переменную bool, чтобы найти, что клавиатура уже появилась или нет. – AnshaD