title: Swift: ScrollRectToVisible not working
body: <p>After trying out most of the solutions posted here, I'm still having trouble moving the textfield to show up above keyboard in a scrollview.</p>
  
  <p>These are links I followed from Stackoverflow solutions:
  <a href="https://stackoverflow.com/questions/28813339/move-a-view-up-only-when-the-keyboard-covers-an-input-field">Link 1</a>
  <a href="https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html" rel="noreferrer">Link 2</a>
  <a href="http://code.tutsplus.com/tutorials/ios-sdk-keeping-content-from-underneath-the-keyboard--mobile-6103" rel="noreferrer">Link 3</a></p>
  
  <p>I'm working on a signup screen that has 1 field behind the keyboard when it shows up.</p>
  
  <p>Here's my code:</p>
  
  <pre><code>class SignUpViewController: UIViewController, UITextFieldDelegate, UIScrollViewDelegate, UIPopoverPresentationControllerDelegate {
  
  @IBOutlet var firstNameTextField: UITextField!
  @IBOutlet var lastNameTextField: UITextField!
  @IBOutlet var phoneNumberTextField: UITextField!
  @IBOutlet var emailTextField: UITextField!
  @IBOutlet var submitButton: UIButton!
  @IBOutlet var professionButton: UIButton!
  
  var scrollView: UIScrollView?
  var activeTextField:UITextField? = UITextField()
  
  override func viewDidLoad() {
      super.viewDidLoad()
  
      let notificationCenter = NSNotificationCenter.defaultCenter()
  
      notificationCenter.addObserver(self, selector: #selector(SignUpViewController.keyboardWasShown(_:)), name: UIKeyboardWillShowNotification, object: nil)
      notificationCenter.addObserver(self, selector: #selector(SignUpViewController.keyboardWillBeHidden(_:)), name: UIKeyboardWillHideNotification, object: nil)
      scrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))
      scrollView!.contentSize = CGSizeMake(self.view.frame.width, self.view.frame.height)
  
      defaultSettings()
  }
  
  func defaultSettings() {
      self.firstNameTextField.delegate = self
      self.lastNameTextField.delegate = self
      self.emailTextField.delegate = self
      self.phoneNumberTextField.delegate = self
  }
  
  func deregisterFromKeyboardNotifications()
  {
      //Removing notifies on keyboard appearing
      NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: nil)
      NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: nil)
  }
  
  func keyboardWasShown(notification: NSNotification)
  {
      //Need to calculate keyboard exact size due to Apple suggestions
      //self.scrollView!.scrollEnabled = true
      var info : NSDictionary = notification.userInfo!
      var keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue().size
      var contentInsets : UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize!.height, 0.0)
  
      self.scrollView!.contentInset = contentInsets
      self.scrollView!.scrollIndicatorInsets = contentInsets
  
      var aRect : CGRect = self.view.frame
      aRect.size.height -= keyboardSize!.height
      if (!CGRectContainsPoint(aRect, activeTextField!.frame.origin))
      {
  //            print(activeTextField?.frame)
  //            var scrollPoint = CGPointMake(0.0, activeTextField!.frame.origin.y - (keyboardSize!.height-15))
          self.scrollView!.scrollRectToVisible((activeTextField?.frame)!, animated: true)
          //self.scrollView?.setContentOffset(scrollPoint, animated: true)
      }
  }
  
  
  func keyboardWillBeHidden(notification: NSNotification)
  {
      //Once keyboard disappears, restore original positions
      //var info : NSDictionary = notification.userInfo!
      //var keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue().size
      var contentInsets : UIEdgeInsets = UIEdgeInsetsZero
      self.scrollView!.contentInset = contentInsets
      self.scrollView!.scrollIndicatorInsets = contentInsets
  //        self.view.endEditing(true)
  //        self.scrollView!.scrollEnabled = false
  
  }
  
  func textFieldDidBeginEditing(textField: UITextField)
  {
      activeTextField = textField
  }
  
  func textFieldDidEndEditing(textField: UITextField)
  {
      activeTextField = nil
  }
  </code></pre>
  
  <p>As you can see, I've tried scrollRectToVisible with frame and setContentOffset with Point. Both didn't work. Whereas the code picks on the emailTextField right as the hidden textfield.</p>