title: keyboardWillShow not respond
body: <p>here is problem, when i debug my program, i found keyboardWillShow function not responds every time. just first time, it will be called by program. here is my code, i dont know whats wrong in my code, but, when the keyboard first appeared, the function run well.</p>
  
  <pre><code>- (void)keyboardWillShow:(NSNotification *)notification {
  
      /*
       Reduce the size of the text view so that it's not obscured by the keyboard.
       Animate the resize so that it's in sync with the appearance of the keyboard.
       */
  
  
      NSDictionary *userInfo = [notification userInfo];
  
      // Get the origin of the keyboard when it's displayed.
      NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
  
      // Get the top of the keyboard as the y coordinate of its origin in self's view's coordinate system. The bottom of the text view's frame should align with the top of the keyboard's final position.
      CGRect keyboardRect = [aValue CGRectValue];
      keyboardRect = [self.view convertRect:keyboardRect fromView:nil];
  
      CGFloat keyboardTop = keyboardRect.origin.y;
      CGRect newTextViewFrame = self.textview.frame;
  
      newTextViewFrame.size.height = keyboardTop - self.view.bounds.origin.y;
  
      // Get the duration of the animation.
      NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
      NSTimeInterval animationDuration;
      [animationDurationValue getValue:&amp;animationDuration];
  
      // Animate the resize of the text view's frame in sync with the keyboard's appearance.
      [UIView beginAnimations:nil context:NULL];
      [UIView setAnimationDuration:animationDuration];
  
      textview.frame = newTextViewFrame;
  
      [UIView commitAnimations];
   }
  - (void)keyboardWillHide:(NSNotification *)notification {
  
      NSDictionary* userInfo = [notification userInfo];
  
      /*
       Restore the size of the text view (fill self's view).
       Animate the resize so that it's in sync with the disappearance of the keyboard.
       */
      NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
      NSTimeInterval animationDuration;
      [animationDurationValue getValue:&amp;animationDuration];
  
      [UIView beginAnimations:nil context:NULL];
      [UIView setAnimationDuration:animationDuration];
  
  //    textview.frame = self.view.bounds;
      [self save];
  
      [UIView commitAnimations];
  }
  </code></pre>
  
  <p>and i regist notification</p>
  
  <pre><code>- (void)viewWillAppear:(BOOL)animated
  {
      [super viewWillAppear:animated];
  
      [[NSNotificationCenter defaultCenter]
       addObserver:self
       selector:@selector(keyboardWillShow:)
       name:UIKeyboardWillShowNotification
       object:nil];
      [[NSNotificationCenter defaultCenter]
       addObserver:self
       selector:@selector(keyboardWillHide:)
       name:UIKeyboardWillHideNotification
       object:nil];
  
  }
  </code></pre>
  
  <p>and remove it in here</p>
  
  <pre><code>- (void)viewDidUnload
  {
      [super viewDidUnload];
      [self save];
      self.textview = nil;
      self.title = nil;
      self.tags = nil;
      [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
      [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
  
  
  }
  </code></pre>
  
  <p>i resign firstresponder, here is my code</p>
  
  <pre><code>- (IBAction)save:(id)sender {
      self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addNote)] autorelease];
  
      [textview resignFirstResponder];
  
  
  }
  
  - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
      self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(save:)] autorelease];
      [self setUpUndoManager];
  
      return YES;
  
  
  }
  
  - (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
      [self save];
      return YES;
  
  }
  </code></pre>