2011-10-25 94 views
3

我創建了一個名爲UICustomButton的類,它是UIView的子類。我添加了一個UIButtonUIViewsubview如下圖所示我的代碼:將按鈕作爲子視圖添加到UIView後不能點擊按鈕

-(id)initWithButtonType:(NSString *)type 
{ 
    self = [super init]; 
    if (self) 
    { 
     self.customButton = [self setupButtonWithTitle:type andFrame:frame]; 
     [self addSubview:self.customButton]; 
     self.customButton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside]; 

    } 
    return self; 
} 

我面臨的問題是,雖然出現的按鈕,它們是不可點擊。我將按鈕添加到UIView的方式有問題嗎?

enter image description here

編輯:要添加上,我使用這個自定義按鈕實例細胞:

UICustomButton *customButton = [[UICustomButton alloc]initWithFrame:someFrame]; 
[cell.contentView addSubView:customButton]; 
+0

'setupButtonWithTitle:andFrame:'做什麼?另外,你需要確保如果'initWithButtonType:'的代碼引用'self'來添加一個選擇器'buttonPressed','buttonPressed'方法確實在同一個類中實現。 – darvids0n

+0

Dup的http://stackoverflow.com/questions/6675233/addsubview-to-uibutton – phatmann

回答

8

檢查UICustomButton對象的框架,並且如果self.customButton超出其superView

+0

是我的超級視圖沒有正確設置。這是造成這個問題的原因。問題解決了。謝謝! – Zhen

+7

可以請你告訴我如何檢查UIButton的框架,如果按鈕超出了它的超級視圖? – thandasoru

-1

嘗試把這個if語句後:

self.isTouchEnabled = YES; 
0

你應該檢查,如果所有屬性userInteractionEnabled上:

  1. 檢查您的細胞,這種觀點顯示
  2. 檢查屬性UITableView是在其中添加這種觀點作爲子視圖
  3. 屬性 UITableViewCell
  4. 檢查財產UICustomButton
  5. 檢查屬性爲customButton-(id)initWithButtonType:(NSString *)type
0

我的按鈕不工作,因爲我有兩個對方的意見。如您所見,第一個視圖的寬度和高度均爲0像素。我將這個視圖的大小設置爲view2,然後我的按鈕可點擊。

UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(325, 346, 0, 0)]; 
    view1.alpha = 0.90; 

    UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 450, 150)]; 
    [view2.layer setCornerRadius:10.0f]; 
    view2.backgroundColor = [UIColor whiteColor]; 

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [btn addTarget:self action:@selector(addClosedToCollection) forControlEvents:UIControlEventTouchUpInside]; 
    [btn setFrame:CGRectMake(30, 30, 300, 32)]; 
    [btn setTitle:@"i'm a button" forState:UIControlStateNormal]; 

    [view2 addSubview:btn]; 
    [view1 addSubview:view2]; 

我希望我幫助別人了:)

2

確保子視圖的框架是它的父的框架之內。我遇到過這個問題兩次,並且子視圖的框架都是不正確的。

0

您的外部視圖可能高度爲0.添加使其與子視圖高度相同(或高於)的約束,或使用足夠大的框架創建它。