我正在编写一个自定义 UIButton 子类,以创建我自己的完全自定义按钮来完全控制。尽管如此,当我尝试将子视图添加到该 UIButton 的视图时,我还是遇到了问题。子视图阻止“触摸”事件,因此它不会冒泡到 UIButton 本身。
这是一个演示:我首先创建了带有框架的 CustomNavigationButton。它是洋红色的。我可以在屏幕上看到洋红色,所以它就在那里。其次,我向那个 CustomNavigationButton(绿色)添加了一个子视图,我可以看到绿色,所以它在那里,但是如果我单击绿色矩形(子视图),则不会在我的 CustomNavigationButton 上调用“UIControlEventTouchUpInside”。
在我的 AppDelete 中:
CustomNavigationButton* mapBtn = [[CustomNavigationButton alloc] initWithFrame:CGRectMake(0, 0, 100, 25)];
mapBtn.backgroundColor = [UIColor magentaColor];
[mapBtn addTarget:self action:@selector(goMapHandler:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:mapBtn];
这是我的 CustomNavigationButton 类(它是 UIButton 的子类)
@implementation CustomNavigationButton
@synthesize bg;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// STORE INITIAL FRAME
self.initialFrame = frame;
bg = [[UIView alloc] initWithFrame:CGRectMake(0, 20, 40, 40)];
bg.backgroundColor = [UIColor greenColor];
[bg setUserInteractionEnabled:YES];
[self addSubview:bg];
}
return self;
}
@end