Keyboard Show/Hide

swift3

#1

я сделал так чтобы поднимался scrollView когда клавиатура выходит как на видео Ивана

Но мне надо чтобы scrollView поднималась только на определенных TextFields а не на всех, как сделать?


#2

Используйте методы textFieldDelegate, там можно настроить действия на каждый конкретный textField


#3

Можно рассказать подробнее?


#4

не так давно был похожий вопрос

В делегате есть например вот такой метод :slight_smile:

   func textFieldDidBeginEditing(UITextField){}

в нем вы можете сделать проверку:

  if textField == myTextField{
        // и тут сделать действие которые начинается при активации myTextField
  } 

ну и остальные методы по анологии


#5

Спасибо большое получилось

func textFieldDidBeginEditing(_ textField: UITextField) {
    print("TextField Work")
    switch textField {
    case emailTextField, addressTextField:
        print("In 1")
        showKB(textField)
    case dayTextField, yearTextField:
        print("In 2")
        showKB(textField)
    default:
        break
    }
}

func showKB(_ textField: UITextField) {
    if textField == emailTextField || textField == addressTextField {
        print("In 3")
        scrollView.contentOffset = CGPoint(x: 0, y: 100)
        secondView.frame.offsetBy(dx: 0, dy: 100)
    } else if textField == dayTextField || textField == yearTextField {
        print("In 4")
        scrollView.contentOffset = CGPoint(x: 0, y: 250)
        secondView.frame.offsetBy(dx: 0, dy: 250)
    }
}

#6

и не забудьте реализовать методы которые отвечают за окончание редактирования и за нажатия на кнопку return


#7

Да сделал, и с анимацией

func hideKB() {
    scrollView.contentOffset = .zero
    secondView.frame = .zero
}

func textFieldDidEndEditing(_ textField: UITextField) {
    UIView.animate(withDuration: 0.7, delay: 0.0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: { 
        self.hideKB()
    }, completion: nil)
    
}