我正在编写一个自定义的UIButton子类,以创建我自己的完全自定义按钮 有完全控制权。不过,当我尝试添加子视图时,我遇到了问题 对UIButton的看法。子视图阻止“触摸”事件,因此它不会冒泡 UIButton本身..
这是一个示范: 我首先使用框架创建我的CustomNavigationButton ..它是洋红色的。 我可以在屏幕上看到洋红色所以它就在那里。其次,我添加了一个子视图 对于那个CustomNavigationButton(绿色),我可以看到它的绿色 那里,但如果我点击绿色矩形(子视图),“UIControlEventTouchUpInside” 不会在我的CustomNavigationButton上调用..
在我的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
答案 0 :(得分:4)
我想出了怎么做! 如果“bg”是我要添加到UIButton的子视图,那么你应该这样做:
bg.userInteractionEnabled = NO;
bg.exclusiveTouch = NO;
但请记住,如果您的子视图扩展了UIButton的框架, 触摸不会发生!您可以检查您的子视图是否超过UIButton 通过给UIButton一个背景色。