У меня есть небольшой пользовательский вид, который я использую в качестве кнопки. Я делаю это с помощью простого UIButtonTypeCustom
, который я включаю в качестве подпредставления за пределы представления. Однако, так как вид небольшой, я хочу увеличить размер пораженной цели. Это легко сделать (можно подумать), установив рамку моей кнопки больше, чем границы пользовательского представления, и установив clipsToBounds
в NO. Это работает для визуала (пользовательская кнопка рисует вне родительского представления), но она не получает touchUpInside
событий в области за пределами родительского представления. Как заставить кнопку получать touchUpInside
события?
- (id) initWithFrame: (CGRect) frame {
if (self = [super initWithFrame: frame]) {
self.backgroundColor = [UIColor clearColor];
self.clipsToBounds = NO;
// ... various image views and labels ...
UIButton *touchArea = [UIButton buttonWithType: UIButtonTypeCustom];
touchArea.backgroundColor = [UIColor colorWithRed: 1 green: 0 blue: 0 alpha: .3]; // so I can see the bounds
CGRect touchAreaFrame = self.bounds;
CGFloat checkboxHitTargetExtension = 7;
touchAreaFrame.origin.y -= checkboxHitTargetExtension;
touchAreaFrame.size.height += (checkboxHitTargetExtension * 2);
touchArea.frame = touchAreaFrame;
[self addSubview: touchArea];
// ... add listeners etc ...
}
return self;
}