title: textViewDidEndEditing: is not called
body: <p>I'm programmatically replacing a UITextField with a UITextView, but this seems to break something in Apple's code.</p>
  
  <p>The class that does the swap-over is the delegate for both. All the delegate methods on the FIELD work correctly - I use "didBeginEditing" to trigger the swap from FIELD -> VIEW.</p>
  
  <p>The didBeginEditing / shouldBeginEditing methods on the VIEW are also invoked correctly.</p>
  
  <p>However ... the shouldEndEditing / didEndEditing methods on the VIEW delegate are <em>never</em> invoked. It doesn't matter how I remove focus, they are never called (I have them breakpointed, with log statements too). e.g. NONE of the following work:</p>
  
  <ol>
  <li>Tap a different textfield on the screen (FIELD delegate gets "shouldBegin" and "didBegin" - VIEW delegate gets <em>nothing</em>)</li>
  <li>Use a gesture recognizer on a background view to invoke "resignFirstResponder" for each element on screen (if a different field is selected, then FIELD delegate gets "shouldEnd" and "didEnd". VIEW gets <em>nothing</em> even if it's selected)</li>
  </ol>
  
  <p>The fact that should/did begin methods are called shows that the delegate has been assigned OK, and is functioning correctly - but why / how are the should/did end methods being ignored? It's as if Apple has a bug in their code for detecting the existence of those methods.</p>
  
  <p>NB: I used Xcode autocomplete / content-assist to create the methods, so I'm confident there's no typos. Just to be clear:</p>
  
  <pre><code>-(BOOL)textViewShouldEndEditing:(UITextView *)textView
  {
      textComments.text = textView.text;
  
      [textView.superview insertSubview:self.textComments aboveSubview:textView];
      [textView removeFromSuperview];
  
      return TRUE;
  }
  
  -(void)textViewDidEndEditing:(UITextView *)textView
  {
      textComments.text = textView.text;
  
          [textView.superview insertSubview:self.textComments aboveSubview:textView];
          [textView removeFromSuperview];
  }
  
  -(BOOL)textViewShouldBeginEditing:(UITextView *)textView
  {
      NSLog(@"blah" );
  
      return TRUE;
  }
  
  -(void)textViewDidBeginEditing:(UITextView *)textView
  {
      NSLog(@"blah" );
  }
  </code></pre>