2016-10-06 2 views
0

Я сделал простое решение, нажимаю текстовое поле, открываю клавиатуру и перемещаю вверх. Но проблема в том, что она перемещает его слишком высоко и покрывает сначала textField. Я не хочу делать scrollView для этого. есть ли другие решения?Клавиатура перемещает взгляд немного слишком вверх

Как это я делаю то, что я описал выше:

NotificationCenter.default.addObserver(self, selector: #selector(RegisterViewController.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil) 
NotificationCenter.default.addObserver(self, selector: #selector(RegisterViewController.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil) 

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 
      } 
     } 
    } 

Здесь вы можете увидеть, что он делает:

enter image description here

enter image description here

+0

Это вид таблицы или просто простой вид? –

+0

Это происходит на первом шоу или когда вы скрываете/показываете несколько раз? Попробуйте удалить ваши операторы if и вместо этого сделайте следующее: self.view.frame.origin.y = -keyboardSize.height (show) и self.view.frame.origin.y = 0 (скрыть) – alexburtnik

+0

Это вид jus. Это происходит каждый раз, когда я нажимаю textField. И ваше решение не сработало :(Он делает то же самое. –

ответ

-1

Есть много библиотек третьих сторон доступны как https://github.com/hackiftekhar/IQKeyboardManager или https://github.com/michaeltyson/TPKeyboardAvoiding.

Вы можете использовать любой из них и самостоятельно забыть о клавиатуре. Эти классные библиотеки позаботятся о большинстве вещей.

+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. становятся недействительными, если связанная страница изменяется. - [Из обзора] (/ review/low-quality-posts/13912113) – NSNoob

+0

@NSNoob Обе эти библиотеки, используемые N числом людей в N числе проектов. Обе эти библиотеки просто не предоставляйте решение вышеуказанной проблемы, но также предоставляйте ответы на все проблемы, связанные с клавиатурой, и используются во всем мире. Я думаю, что вы должны бросить правильный ответ, прежде чем давать отрицательный рейтинг любому человеку. – Alfa

+0

Это не имеет значения. Политика заключается в предоставлении решений здесь, а не в ссылках. Добавьте ссылки, если хотите, но также добавьте программное решение. Ссылки могут стать недействительными, что сделает весь ответ недействительным. – NSNoob

0

У вас есть несколько вариантов: например:

  • перемещение метки по-разному в зависимости от texfield отводов (меньше, если первое поле, больше для последнего)
  • изменить свой интерфейс, так что все ваши тексты поля используют только пространство, доступное, когда клавиатура вставлена ​​
Смежные вопросы