2015-09-14 5 views
0

Прямо сейчас у меня есть функция, которая сдвигает весь экран вверх, если нижнее текстовое поле сливает в противном случае, если верхнее текстовое поле постучало, то я не сдвигать экран:UITapGestureRecognizer штатов не работает

func keyboardWillShow(notification: NSNotification) { 
     var tapTopTextField: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: nil) 
     topTextField.addGestureRecognizer(tapTopTextField) 
     topTextField.userInteractionEnabled = true 
     if(tapTopTextField.state == .Began) { 
      // don't move screen 
     } 
     // then it is the bottomTextField that is tapped 
     else { 
      self.view.frame.origin.y -= getKeyboardHeight(notification) 
     } 

    } 

Итак, с этим кодом мой экран по-прежнему сдвигается, если topTextField задействован, а другой способ сделать его не изменен - ​​это позволить состоянию .Possible, но при этом отключается экран, перемещающийся при нажатии на bottomTextField. Есть ли что-то, чего я здесь не хватает, а также есть более элегантный способ сделать это?

Обновление: Итак, я понял, что причина, что это происходит потому, что, когда эта функция называется TextField уже выбран и, следовательно, сбрасывается в .Possible состояние

ответ

0

Путь я иду является дизайн пользовательского интерфейса, так что текстовые поля находятся в верхней части клавиатуры. Если что-то должно быть внизу и может быть покрыто клавиатурой, я позволяю пользователю справляться с прокруткой.

0

Итак, я понял ответ, и вот он!

func keyboardWillShow(notification: NSNotification) { 

      if(topTextField.isFirstResponder()) { 
       // don't move screen 
      } 
      // then it is the bottomTextField that is tapped 
      else { 
       self.view.frame.origin.y -= getKeyboardHeight(notification) 
      } 

     } 

С помощью isFirstResponder я могу проверить, выбран ли текстовый фильтр!

Смежные вопросы