title: Present ViewController modally shows weird animation
body: <p>I'm trying to create a simple modal view controller that lets you edit text using a text view. However, when I present the view controller modally, it slides in from the bottom left direction instead of just sliding in from the bottom. </p>
  
  <p>Here's a video of the weird effect: <a href="http://youtu.be/9M_MHA5mt1M" rel="nofollow">http://youtu.be/9M_MHA5mt1M</a></p>
  
  <p>My controller simply watches for the keyboard to show and then resizes the text view using auto layout appropriately. Here's the code:</p>
  
  <pre><code>#import "TextPicker.h"
  
  @interface TextPicker ()
  
  @property (weak, nonatomic) IBOutlet NSLayoutConstraint *keyboardHeight;
  
  @end
  
  @implementation TextPicker
  
  - (id)initWithText:(NSString *)text
  {
      UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
      self = [storyboard instantiateViewControllerWithIdentifier:@"textPicker"];
      if (self) {
          self.text = text;
  
      }
      return self;
  }
  
  - (void)viewDidLoad
  {
      [super viewDidLoad];
  
      [self observeKeyboard];
  
      //self.textView.text = self.text;
      [self.textView becomeFirstResponder];
  }
  
  
  - (void) viewWillDisappear:(BOOL)animated {
      [self.textView resignFirstResponder];
  }
  
  - (IBAction)savePressed:(id)sender {
      [self dismissViewControllerAnimated:YES completion:nil];    
  }
  
  - (IBAction)cancelPressed:(id)sender {
      [self dismissViewControllerAnimated:YES completion:nil];
  }
  
  - (void)didReceiveMemoryWarning
  {
      [super didReceiveMemoryWarning];
  }
  
  - (void) dealloc {
      [self stopObervingKeyboard];
  }
  
  - (void)observeKeyboard {
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillChangeFrameNotification object:nil];
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
  }
  
  - (void)stopObervingKeyboard {
      [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillChangeFrameNotification object:nil];
      [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
  }
  
  - (void)keyboardWillShow:(NSNotification *)notification {
      NSDictionary *info = [notification userInfo];
  
      NSValue *kbFrame = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
      CGRect keyboardFrame = [kbFrame CGRectValue];
      self.keyboardHeight.constant = -keyboardFrame.size.height;
  
      NSTimeInterval animationDuration = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
      [UIView animateWithDuration:animationDuration animations:^{
          [self.view layoutIfNeeded];
      }];
  }
  
  - (void)keyboardWillHide:(NSNotification *)notification {
      NSDictionary *info = [notification userInfo];
      NSTimeInterval animationDuration = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
  
      self.keyboardHeight.constant = 0;
      [UIView animateWithDuration:animationDuration animations:^{
          [self.view layoutIfNeeded];
      }];
  }
  
  - (IBAction)dismissKeyboard:(id)sender {
      [self.textView resignFirstResponder];
  }
  
  
  @end
  </code></pre>