2017-10-17 15 views
0

키보드가 첫 번째 응답자를 얻은 요소를 다룰 때보기를 이동하는 문제를 처리하고 있습니다. 나는 this question을보고 시작했고 나에게 커다란 시작을주었습니다. UIKeyboardWillShow 나는 다음과 같은 코드로 종료 UIKeyboardWillHide에 관찰자를 추가 한 후 :키보드가 나타날 때 UIView 관리

func keyboardWillShow(notification: Notification) { 

     guard let userInfo = notification.userInfo, 
       let kbRect = userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue, 
       let duration = userInfo[UIKeyboardAnimationDurationUserInfoKey] as? Double else { 
      return 
     } 

     let kbSize = kbRect.cgRectValue.size 

     UIView.animate(withDuration: duration) { 
      self.view.transform = CGAffineTransform(translationX: 0, y: -kbSize.height) 
     } 
    } 

    func keyboardWillHide(notification: Notification) { 
     UIView.animate(withDuration: 0.3) { 
      self.view.transform = CGAffineTransform(translationX: 0, y: 0) 
     } 
    } 

뷰가 아래로 이동하고 있다는 그것은 의미에서 잘 작동 할 때 텍스트 필드가 이익 최초의 응답을. 그러나 키를 누르면 뷰가 다시 움직이며 첫 번째 위치에서 뷰를 위로 이동하는 목적을 상실합니다. 키보드가 처음 나타나고 사라질 때 잘못된 동작을보다 잘 설명하기 위해 약간의 GIF를 만들었습니다. 두 번째로 키를 누르면 원하지 않는 동작이 표시됩니다.

problem presented

그래서, 질문은, 키를 누를 때 뷰의 움직임을 방지 할 수있는 방법은 무엇입니까? 사용자가 키보드를 사용하여 텍스트를 삽입 할 때 뷰를 "위로"유지하고 싶습니다.

당신은보기 응용 프로그램을 이동해야
+0

어떻게이 이미지를 설정 했습니까? 거기에는 어떤 제약이 있습니까? –

+0

@Lu_ 모든보기에서 저에게 일어납니다. 그 이미지는 단지 UIView였습니다. 문제점을 설명하기 위해 했었습니다. 이미지의 제약 조건은 맨 위, 맨 위 및 맨 아래로 슈퍼 뷰, 맨 아래의 텍스트 필드, 모두 8 개의 값으로 구성됩니다. –

답변

0

이 그것을 변환하지, 사용 :

self.view.frame.origin.y -= kbSize.height 

변형이 지금

0

이 출구로 UIView의 설정처럼 행동하고 에이 코드를 삽입해야 viewDidLoad에

yourView.translatesAutoresizingMaskIntoConstraints = true