2013-10-04 48 views
3

我的按鈕被禁用,但我想在用戶單擊它時顯示一個消息框。我該怎麼做?另外我想提一下,在UITableview中添加了UIbutton,並且我嘗試了下面的代碼,但它總是會去elseDisableClick()函數。識別禁用的UIButton上的點擊或手勢事件

cellForRowAtIndexPath:

button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setFrame:CGRectMake(180, 6, 30, 30)]; 
    [button setTag:4000]; 
    [button addTarget:self action:@selector(click:event:) forControlEvents:UIControlEventTouchDown]; 
    UITapGestureRecognizer* gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(DisableClick:)]; 
    [self.view addGestureRecognizer:gesture]; 
    [gesture release]; 
    [cell.contentView addSubview:button]; 

DisableClick()

- (void)DisableClick:(UIButton*)sender { 
    UITapGestureRecognizer *recognizer = (UITapGestureRecognizer *)sender; 
    CGPoint pt = [recognizer locationOfTouch:0 inView:market]; 
    if (CGRectContainsPoint(market.bounds, pt)) { 
     NSLog(@"Disabled button tapped"); 

    } 
    else 
    { 
    NSLog(@"go out"); // it's always go to here 
    } 

} 

回答

2

不是desabling按鈕保持啓用。像禁用圖像一樣更改按鈕的圖像。把一個標誌變量,當按鈕被點擊這個標誌變量運行啓動按鈕和禁用按鈕

BOOL btnFlg;//initialize it true or false on cellForRowAtIndex... method 
- (void)DisableClick:(UIButton*)sender 
{ 
    if(btnFlg) 
    { 
      btnFlag=NO; 
      NSLog("button disabled"); 
    } 
    else 
    { 
      btnFlag=YES; 
      NSLog("button enabled"); 
    } 
} 
+0

謝謝,但它不能使用手勢? –

+0

爲什麼你想使用手勢?爲了什麼樣的功能?你可以輕鬆實現你所需要的而不需要手勢。 –

0

的代碼,你爲什麼初始化這個按鈕自來水gesure。你在這裏設置選擇器addTarget

爲按鈕狀態維護一個btn布爾值。只要您想禁用或啓用,就更改狀態。

BOOL btnEnabled;

button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setFrame:CGRectMake(180, 6, 30, 30)]; 
    [button setTag:4000]; 
    [button addTarget:self action:@selector(DisableClick:) forControlEvents:UIControlEventTouchUpInside]; 
    [cell.contentView addSubview:button]; 

使目標函數爲

- (void)DisableClick:(UIButton*)sender { 

    //set the function that you needed when the user tap on this button here. 
    if(btnEnabled) { 
    // here invoke the functions you needed when the button enabled 
    } else { 
     UIAlertView *msg = [[UIAlertView alloc]initWithTitle:@"Alert" message:@"Your button is disabled" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     [msg show]; 
    } 

} 
+0

不,因爲我想按鈕啓用時,它會調用其他功能。而當按鈕禁用,我想當用戶點擊這個按鈕,它會顯示一個消息框 –

+0

@JosonDaniel:看到我編輯的答案 – manujmv

0

您將需要繼承的UIButton和實施 的touchesBegan:withEvent:方法和touchesEnded:withEvent:方法方法你的目的。