1

iOS アプリにボタンがあります。

    _Button = [UIButton buttonWithType:UIButtonTypeCustom];
    UIImage *shareIMG = [UIImage imageNamed:@"button.png"];
    [_Button setBackgroundImage:shareIMG forState:UIControlStateNormal];
    [_Button setBackgroundImage:[UIImage imageNamed:@"button_active.png"] forState:UIControlStateHighlighted];
    [_Button addSubview:titleLabel];

    UILabel * titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 3, shareIMG.size.width, shareIMG.size.height)];
    [titleLabel setTextAlignment:UITextAlignmentCenter];
    [titleLabel setText:@"Button";
    [_Button addSubview:titleLabel];
    [titleLabel release];
    [_Button setFrame:CGRectMake(2 * self.sendPushButton.frame.origin.x + self.sendPushButton.frame.size.width , 380 - liteIndent1 - liteIndent2 + iphone5Fix, shareIMG.size.width, shareIMG.size.height)];
    [self addSubview:_Button];

このボタンを非アクティブ (button_non_active.png) にして、クリック後 10 分間クリックできないようにする方法を教えてください。

4

5 に答える 5

5
// disable button
[_Button setEnabled:NO];

// run a selector after 10 minutes
[_Button performSelector:@selector(onEnableButton:) withObject:_Button afterDelay:(10.0 * 60.0)]


- (void) onEnableButton:(UIButton *)sender
{
 [sender setEnabled:YES];
}
于 2013-01-15T13:52:58.493 に答える
0

それを再度有効にする同じクラスにメソッドを作成します。

-(void)enableButton:(UIButton *)button {
    [button setBackgroundImage:[UIImage imageNamed:@"button_active.png"] forState:UIControlStateHighlighted];
    button.enabled = YES;
}

そして、押されたときに起動されるセレクター(スニペットからこれが欠落しているようです。で設定してください[_Button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

-(void)buttonPressed:(UIButton *)button {
    //do actual action here
    [button setBackgroundImage:[UIImage imageNamed:@"button_non_active.png"] forState: UIControlStateHighlighted];
    button.enabled = NO;
    [self performSelector: @selector(enableButton:) withObject: button afterDelay: 600.0];
}
于 2013-01-15T13:52:20.557 に答える
0

` を使用

 btn.enabled=NO;`

  NSTimer  *   notificationTimer = [NSTimer scheduledTimerWithTimeInterval:10*60.0 target:self selector:@selector(enable) userInfo:nil repeats:No];

    -(void)enable
    {
    btn.enabled=YES;
    }

単なるガイダンスに変更してください。必要に応じて繰り返しはいまたはいいえを設定します

于 2013-01-15T13:52:23.797 に答える
0

ボタンをクリックすると、関数を呼び出す必要があります。

- (void)buttonClickedStartTimer
{
    _Button.userInteractionEnabled = FALSE;
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(stopTimer) userInfo:nil repeats:YES];

}

- (void)stopTimer
{
     _Button.userInteractionEnabled = TRUE;
    [timer invalidate];
    [timer release];
}
于 2013-01-15T13:53:22.500 に答える
0
  _Button = [UIButton buttonWithType:UIButtonTypeCustom];
    [_Button setImage:[UIImage imageNamed:@"button_active.png"] forState:UIControlStateNormal];
    [_Button setImage:[UIImage imageNamed:@"button_non_active.png"] forState:UIControlStateDisabled];
    [_Button addSubview:titleLabel];
   [_Button setEnabled:NO];

    int64_t delayInSeconds = 60.0 * 10;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
       [_Button setEnabled:YES];
    });

于 2013-01-15T13:55:30.193 に答える