2016-08-24 4 views
0

메인 뷰와 같은 높이가 아닌 uiscrollview가 있습니다. 이 scrollview 외부에 uitextfield 및 단추가 있습니다. 거기에 값을 입력하고 버튼을 클릭하면 scrollview 안에 다른 텍스트 필드가 생성되고 다시 누르면 이전에 작성한 텍스트 필드 아래에 다른 텍스트 필드가 작성됩니다. 이제 키보드보기 위에 표시되어야하는 새로 만든 텍스트 필드로보기를 스크롤하려고합니다. 나는 다음을 시도했다. 작동하지 않습니다.스위프트 : 스크롤이 작동하지 않습니다.

func keyboardWillShow() { 
var userInfo = notification.userInfo! 
var keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue() 
let textField: UITextField = self.scrollView!.viewWithTag(rowsCount) as! UITextField 
let newRect: CGRect = CGRectMake(textField.frame.origin.x, textField.frame.origin.y, textField.frame.width, textField.frame.height) 
let newFrame = self.view.convertRect(newRect, fromView: nil) 
keyboardFrame = self.view.convertRect(keyboardFrame, fromView: nil) 
//   contentInset.bottom = newRect.origin.y + newRect.height 
      var viewRect: CGRect = self.view.frame 
      viewRect.size.height = viewRect.height - keyboardFrame.height - 40.0 

      if (!CGRectContainsPoint(viewRect, (newFrame.origin))) { 
       self.scrollView.scrollRectToVisible((newFrame), animated: true) 
      } 
} 

P .: 새로운 텍스트 필드가 생성 될 때마다 rowsCount가 증가합니다.

+0

정확한 요구 사항을 얻지 못했습니다! 버튼을 누르면 새로운 텍스트 필드가 생성됩니다. 텍스트 필드를 활성화 된 텍스트 필드로 지정 하시겠습니까? – Lion

+0

활성 텍스트 필드가 항상 값을 입력하고 있기 때문에 활성 텍스트 필드가 필요하지 않습니다 (uiscrollview 외부에있는 값). 내가 원하는 것은 새로 만든 텍스트 필드로 스크롤 할 스크롤 뷰입니다. –

답변

0

당신은 같이 할 수있는,

scrollView.scrollRectToVisible(CGRect(x: x, y: y, width: 1, height: 1), animated: true) 

// or 

scrollView.setContentOffset(CGPoint(x: x, y: y), animated: true) 

는 버튼 클릭에로 x와 y를 전달합니다.

+0

이 작동하지 않습니다. 문제는 해당 텍스트 필드가 해당보기 (uiscrollview - keyboardview) 내에 있는지 확인하려고하지만 해당 텍스트 필드가 전체 uiscrollview 내에 있는지 확인하는 것입니다. –

관련 문제