我正在使用Objective-C在XCode 7上创建一个计时器应用程序,我想在执行以下代码时禁用连接到操作char **array = NULL ;
array = malloc( 2 * sizeof( char * ) ) ;
array[0] = malloc( 24 ) ;
array[1] = malloc( 11 ) ;
strcpy( array[0], "first" ) ;
strcpy( array[1], "second" ) ;
printf( "%s\n%s\n", array[0], array[1] ) ;
/* swap the rows */
char *t = array[0] ;
array[0] = array[1] ;
array[1] = t ;
printf( "%s\n%s\n", array[0], array[1] ) ;
free( array[0] ) ;
free( array[1] ) ;
free( array ) ;
的按钮
startCount
我需要添加哪些代码才能停用与操作- (IBAction)startCount:(id)sender {
countInt = 0;
self.Label.text = [NSString stringWithFormat:@"%i", countInt];
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countTimer) userInfo:nil repeats:YES];
}
相关联的按钮?
由于
答案 0 :(得分:1)
您需要通过enabled
标记disable
发件人:
((UIButton*)sender).enabled = false;
计时器结束后不要忘记重新启用按钮。
如果启用状态为NO,则控件忽略触摸事件[...]
除了我在上面的代码中所做的演员之外:更改你的方法签名以获取UIButton*
,而不仅仅是一个id,这样你就可以确保演员不会失败。施法者的轻微变化将转而投射到UIControl*
。
答案 1 :(得分:0)
如果我理解正确:为了让您的代码更容易理解(如果有多个按钮可能被轻击/禁用,以避免不愉快的竞争条件),我建议避免使用计时器。相反,请考虑dispatch_after()
这样:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
sender.userInteractionEnabled = false;
});
我们将sender
传递给方法,它将是被点击的按钮。 1 * NSEC_PER_SEC
表示"延迟一秒。"