如何设置在特定时间内选择的按钮?

时间:2013-08-29 21:49:43

标签: ios objective-c button

我正在使用XCode为iOS开发,基本上我的按钮正在执行的操作是单击按钮,声音播放约5秒钟,当我单击它时按钮的图像也会发生变化。因此,声音播放和图像同时发生变化。这是我遇到的问题。

当我按下按钮时,图像会改变一秒钟,只有在你用手指按住它时才会保持不变。

我设置了一个插座

button.selected= YES

然后

button.selected= NO

或“突出显示”代替“选定”两种方式都会导致两种情况之一。打算切换到触摸状态的新图像现在显示为“默认”,因为首先将其设置为“YES”会导致该图像,或者继续执行与上面相同的操作,仅更改一秒钟。

我可以做些什么来将其被突出显示或选择的持续时间设置为触摸后5秒,这样它在触摸时会改变并且在声音结束之前不会改变回来?

-Extra stuff: 我正在使用Audio Toolbox框架作为声音代码,并启用了ARC。

一如既往地谢谢!

2 个答案:

答案 0 :(得分:1)

您可以将按钮设置为已选中,然后使用Grand Central Dispatch的dispatch_after在延迟5秒后取消选择按钮。

[myButton setSelected:YES];

double delayInSeconds = 5.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    [myButton setSelected:NO];
});

答案 1 :(得分:1)

我认为你几乎就在那里。你想做

button.selected = YES;

声音开始时,但您不想将其更改回NO,直到声音完成。您可以设置这样的计时器:

[NSTimer scheduledTimerWithTimeInterval:5.0f target:self selector:@selector(soundDone:) userInfo:button repeats:NO];

然后实现soundDone:方法,以便它只是将按钮设置为未选中。

但是,我强烈建议您查看音频框架并找到更精确的方法来检测声音何时结束,而不是使用计时器。