How can I move UItextview  up and down in a UIScrollView in an iphone app when keyboard appear and disappear.
 
    
    - 2,518
- 1
- 27
- 31
 
    
    - 49
- 1
- 3
- 
                    1You'd better do something before ask ;) – Kjuly Jul 12 '13 at 09:40
- 
                    @nila code is ready for that. see my answer – DharaParekh Jul 12 '13 at 10:17
4 Answers
One of the way is --->in viewDidLoad or ViewWillAppear add these observer
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(keyboardDisappeared) name:UIKeyboardWillHideNotification object:nil];
[center addObserver:self selector:@selector(keyboardAppeared) name:UIKeyboardWillShowNotification object:nil];
than write keyboardDisappeared and keyboardAppeared as follow 
-(void) keyboardDisappeared
{
    [UIView beginAnimations:@"animate" context:nil];
    [UIView setAnimationDuration:0.2f];
    [UIView setAnimationBeginsFromCurrentState: NO];
    self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y+100(same as you do in keyboardAppeared), self.view.frame.size.width, self.view.frame.size.height);
    [UIView commitAnimations];
}
-(void) keyboardAppeared
{
    [UIView beginAnimations:@"animate" context:nil];
    [UIView setAnimationDuration:0.2f];
    [UIView setAnimationBeginsFromCurrentState: NO];
    self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y-(as much you want), self.view.frame.size.width, self.view.frame.size.height);
    [UIView commitAnimations];
}
UPDATE:
SWIFT 3.x/4.x
Add these observer -
    NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
And the selector methods:
@objc func keyboardWillShow(notification:NSNotification) {
    adjustView(show: true, notification: notification)
}
@objc func keyboardWillHide(notification:NSNotification) {
    adjustView(show: false, notification: notification)
}
func adjustView(show:Bool, notification:NSNotification) {
    var userInfo = notification.userInfo!
    let keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue
    let animationDurarion = userInfo[UIKeyboardAnimationDurationUserInfoKey] as! TimeInterval
    let changeInHeight = (keyboardFrame.size.height + 40/*or any value as per need*/) * (show ? 1 : -1)
    UIView.animate(withDuration: animationDurarion, animations: { () -> Void in
        // change height Constraint or change height with changeInHeight here to your UItextView/other view
    })
}
don't forget to remove observer!!!
 
    
    - 3,852
- 1
- 25
- 47
- 
                    +1 for using notifications, but how old was the book you copied the UIView animation code from? We've had block based animation for 3 years!!! – Ashley Mills Jul 12 '13 at 13:52
- 
                    doesn't matter @AshleyMills because code never gets old. what matter is, it doesn't affect your program efficiency. – Suryakant Sharma Jul 15 '13 at 05:31
- 
                    1According to Apple's docs - `beginAnimations:context:` **Use of this method is discouraged in iOS 4.0 and later. You should use the block-based animation methods to specify your animations instead.** – Ashley Mills Jul 15 '13 at 13:07
- 
                    
Just add notification observer for keyboard's action in -viewDidLoad or -viewWillAppear::
NSNotificationCenter * notificationCetner = [NSNotificationCenter defaultCenter];
[notificationCetner addObserver:self
                       selector:@selector(_keyboardWasShown:)
                           name:UIKeyboardDidShowNotification
                         object:nil];
[notificationCetner addObserver:self
                       selector:@selector(_keyboardWillHide:)
                           name:UIKeyboardWillHideNotification
                         object:nil];
Then update your text view's frame in -_keyboardWasShown: & -_keyboardWillHide: methods.
 
    
    - 34,476
- 22
- 104
- 118
There is a nice library called TPKeyboardAvoiding that you can use (find it here). 
Alternatively you could program it yourself and use the contentOffset property of the UIScrollView to move the content down or upwards. You then should be listening to the keyboardDidShow and keyboardWillHide methods of the keyboard. 
Hope it helps!
 
    
    - 2,567
- 3
- 20
- 41
First set textview's delegate and then try to implement these methods....
    - (BOOL)textViewShouldBeginEditing:(UITextView *)textView
    {
        [self scrollViewToCenterOfScreen:textView];
        return YES;
    }
    - (void) scrollViewToCenterOfScreen:(UIView *)theView
    {
        CGFloat viewCenterY = theView.center.y;
        CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
        CGFloat availableHeight = applicationFrame.size.height - 300;            // Remove area covered by keyboard
        CGFloat y = viewCenterY - availableHeight / 2.0;
        if (y < 0)
        {
            y = 0;
        }
        [scrollView setContentOffset:CGPointMake(0, y) animated:YES];
    }
// -------- Modified --------
    - (BOOL)textView:(UITextView *)txtView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)tempText
{
    if( [tempText rangeOfCharacterFromSet:[NSCharacterSet newlineCharacterSet]].location == NSNotFound )
    {
        return YES;
    }
    [txtView resignFirstResponder];
    [self.scrollView setContentOffset:CGPointMake(0.0f, 0.0f) animated:TRUE];
    return NO;
}
 
    
    - 17,485
- 5
- 50
- 66
- 
                    1You should use `UIKeyboardWillHide/ShowNotification` then you won't need to hardcode sizes. – Ashley Mills Jul 12 '13 at 09:56
- 
                    its k but what problem in this code n y u downvote to this answer... – Dharmbir Singh Jul 12 '13 at 09:58
- 
                    @Dharmbir Choudhary : I can move the textview up. but can't move down using this code – Nila Jul 12 '13 at 09:58
- 
                    
- 
                    
-