title: iPhone: Override UIButton buttonWithType to return subclass
body: <p>I want to be able to create a UIButton with an oversized responsive area.  I know that one way to do that is to override the hitTest method in a subclass, but how do I instantiate my custom button object in the first place?</p>
  
  <pre><code>[OversizedButton buttonWithType: UIButtonTypeDetailDisclosure];
  </code></pre>
  
  <p>doesn't work out of the box because buttonWithType returns a UIButton, not an OversizedButton.</p>
  
  <p>So it seems like I need to override the buttonWithType method as well.  Does anyone know how to do this?</p>
  
  <pre><code>@implementation OversizedButton
  
  + (id)buttonWithType:(UIButtonType)buttonType
  {
     // Construct and return an OversizedButton rather than a UIButton
     // Needs to handle special types such as UIButtonTypeDetailDisclosure
     // I NEED TO KNOW HOW TO DO THIS PART
  }
  
  - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
  {
     // Return results if touch event was in oversized region
     // I ALREADY KNOW HOW TO DO THIS PART
  }
  
  @end
  </code></pre>
  
  <p>Alternatively, maybe I could create the button using alloc/initWithFrame. But the buttonType property is readonly, so how do you create the custom button types?</p>
  
  <p>Note: I know there are other ways to do this, such as having an invisible button behind the visible one.  I don't care for that approach and would prefer to avoid it.  Any help on the approach described above would be very helpful.  Thanks</p>