Search code examples
iosiphoneuiscrollviewuitextfieldinputview

Moving uiTextField With ScrollView - Scroll stop working


I'm using some functions to move the UITextFieldsimmediately after InputView, see my code below:

func DismissKeyboard(){
    //Causes the view (or one of its embedded text fields) to resign the first responder status.
    view.endEditing(true)
}

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.registerForKeyboardNotifications()
}

override func viewDidDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    NSNotificationCenter.defaultCenter().removeObserver(self)
}

func registerForKeyboardNotifications() {
    let notificationCenter = NSNotificationCenter.defaultCenter()
    notificationCenter.addObserver(self,
        selector: "keyboardWillBeShown:",
        name: UIKeyboardWillShowNotification,
        object: nil)
    notificationCenter.addObserver(self,
        selector: "keyboardWillBeHidden:",
        name: UIKeyboardWillHideNotification,
        object: nil)
}

func keyboardWillBeShown(sender: NSNotification) {
    let info: NSDictionary = sender.userInfo!
    let value: NSValue = info.valueForKey(UIKeyboardFrameBeginUserInfoKey) as! NSValue
    let keyboardSize: CGSize = value.CGRectValue().size
    let contentInsets: UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize.height + 8, 0.0)
    backgroundScrollView.contentInset = contentInsets
    backgroundScrollView.scrollIndicatorInsets = contentInsets
}

// Called when the UIKeyboardWillHideNotification is sent
func keyboardWillBeHidden(sender: NSNotification) {
    let insets: UIEdgeInsets = UIEdgeInsetsMake(self.backgroundScrollView.contentInset.top, 0, 0, 0)

    //let insets: UIEdgeInsets = UIEdgeInsetsZero
    backgroundScrollView.contentInset = insets
    backgroundScrollView.scrollIndicatorInsets = insets

}
func textFieldShouldReturn(textField: UITextField) -> Bool {
    textField.resignFirstResponder()
    return true
}

What is happening is, after tap on the first UITextField, backgroundScrollView stop scroll, and my app there are lot of fields that need to scroll screen to see.

What may I doing wrong?


Solution

  • In keyboardWillBeShown() method setcontentSize: -

    backgroundScrollView.contentSize = CGSizeMake(0, 600)
    

    0 "width" means -> Dont scroll in x direction

    600 "height" means -> Scroll content can be scroll upto 600 height