메인 뷰와 같은 높이가 아닌 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가 증가합니다.
정확한 요구 사항을 얻지 못했습니다! 버튼을 누르면 새로운 텍스트 필드가 생성됩니다. 텍스트 필드를 활성화 된 텍스트 필드로 지정 하시겠습니까? – Lion
활성 텍스트 필드가 항상 값을 입력하고 있기 때문에 활성 텍스트 필드가 필요하지 않습니다 (uiscrollview 외부에있는 값). 내가 원하는 것은 새로 만든 텍스트 필드로 스크롤 할 스크롤 뷰입니다. –