2

I use this code for move the view up when keyboard appears, in my login page this code worked great, but in the signup page it did not work.

func textFieldDidBeginEditing(textField: UITextField) { animateViewMoving(true, moveValue: 100) } func textFieldDidEndEditing(textField: UITextField) { animateViewMoving(false, moveValue: 100) } func animateViewMoving (up:Bool, moveValue :CGFloat){ var movementDuration:NSTimeInterval = 0.3 var movement:CGFloat = ( up ? -moveValue : moveValue) UIView.beginAnimations( "animateView", context: nil) UIView.setAnimationBeginsFromCurrentState(true) UIView.setAnimationDuration(movementDuration ) self.view.frame = CGRectOffset(self.view.frame, 0, movement) UIView.commitAnimations() } 

I have another function to return key on the keyboard, it also worked on the login page but not on the signup page. All things are same between the two pages.

 func textFieldShouldReturn(textField: UITextField) -> Bool { textField.resignFirstResponder() return true } 
2
  • check that your delegete is connected or not Commented Oct 22, 2015 at 6:56
  • for demo check this link : github.com/harshilkotecha/… Commented Apr 19, 2017 at 11:20

2 Answers 2

6

have you assigned your delegate of UITextField in your ViewController class? if not set it to self.

self.youttextfield.delegate = self 
Sign up to request clarification or add additional context in comments.

2 Comments

@Mohammad is it solved your problem? please mention, so we can suggest you more solutions.
thanks for helping @Israr, you are right but i use this code without 'UITextFieldDelegate' in my login page and worked great,
0

Demo link : https://github.com/harshilkotecha/UIScrollViewWhenKeyboardAppearInSwift3

when you have multiple textview it is so difficult so best solution ->

step 1 : add UITextFieldDelegate

class ScrollViewController: UIViewController,UITextFieldDelegate { 

step 2 :create new IBOutlet but don't connect with any text field

// get current text box when user Begin editing @IBOutlet weak var activeTextField: UITextField? 

step 3 : write this two method when user focus on text filed object pass the reference and store in activeTextField

// get current text field func textFieldDidBeginEditing(_ textField: UITextField) { activeTextField=textField; } func textFieldDidEndEditing(_ textField: UITextField) { activeTextField=nil; } 

step 5 : set Notification in viewdidload setNotificationKeyboard

 override func viewWillAppear(_ animated: Bool) { // call method for keyboard notification self.setNotificationKeyboard() } // Notification when keyboard show func setNotificationKeyboard () { NotificationCenter.default.addObserver(self, selector: #selector(keyboardWasShown(notification:)), name: .UIKeyboardWillShow, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillBeHidden(notification:)), name: .UIKeyboardWillHide, object: nil) } 

step 6 : two method for hide and unhide

func keyboardWasShown(notification: NSNotification) { var info = notification.userInfo! let keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size let contentInsets : UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize!.height+10, 0.0) self.scrollView.contentInset = contentInsets self.scrollView.scrollIndicatorInsets = contentInsets var aRect : CGRect = self.view.frame aRect.size.height -= keyboardSize!.height if let activeField = self.activeTextField { if (!aRect.contains(activeField.frame.origin)) { self.scrollView.scrollRectToVisible(activeField.frame, animated: true) } } } // when keyboard hide reduce height of scroll view func keyboardWillBeHidden(notification: NSNotification){ let contentInsets : UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0,0.0, 0.0) self.scrollView.contentInset = contentInsets self.scrollView.scrollIndicatorInsets = contentInsets self.view.endEditing(true) } 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.