Я хочу иметь возможность создавать UIButton с большой чувствительной областью. Я знаю, что один из способов сделать это - переопределить метод hitTest в подклассе, но как мне вначале создать экземпляр объекта пользовательской кнопки?
[OversizedButton buttonWithType: UIButtonTypeDetailDisclosure];
не работает "из коробки", потому что buttonWithType возвращает UIButton, а не OversizedButton.
Похоже, мне нужно переопределить метод buttonWithType. Кто-нибудь знает, как это сделать?
@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
В качестве альтернативы, возможно, я мог бы создать кнопку, используя alloc / initWithFrame. Но свойство buttonType доступно только для чтения, так как вы можете создавать пользовательские типы кнопок?
Примечание: я знаю, что есть другие способы сделать это, например, иметь невидимую кнопку позади видимой. Меня не волнует такой подход, и я бы предпочел его избежать. Любая помощь в подходе, описанном выше, будет очень полезна. Спасибо