2012-12-11 105 views
1

我正在編寫一個自定義UIButton子類,以創建我自己的完全自定義按鈕 有全面控制。不過,當我嘗試將子視圖 添加到該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 

回答

4

我想出如何d哦! 如果「BG」是我加入到UIButton的子視圖,那麼你應該做的:

bg.userInteractionEnabled = NO; 
bg.exclusiveTouch = NO; 

但要記住的是,如果你的子視圖擴展的UIButton的框架,不會發生 觸摸!通過給UIButton一個背景顏色,你可以檢查你的子視圖是否超過了UIButton 。

+1

謝謝,這讓我瘋狂! – Jano

相關問題