Я хочу создать 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 доступно только для чтения, поэтому как вы создаете пользовательские типы кнопок?
Примечание. Я знаю, что есть другие способы сделать это, например, иметь невидимую кнопку за видимой. Я не забочусь о таком подходе и предпочел бы избежать этого. Любая помощь по описанному выше подходу будет очень полезна. Благодаря