0

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

当我按下按钮时,图像会改变一秒钟,并且只有当您将手指放在上面时才会保持变化。

我在我设置的地方设置了一个插座

button.selected= YES

然后

button.selected= NO

或“突出显示”代替“选定”,无论哪种方式都会导致两件事之一。原本打算切换到触摸状态的新图像现在显示为“默认”,因为将其设置为“是”首先会导致这种情况,或者它会继续执行与上述相同的操作,只是改变一秒钟。

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

- 额外的东西:我正在使用音频工具箱框架作为声音代码,并且启用了 ARC。

一如既往的感谢!

4

2 回答 2

1

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

[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];
});
于 2013-08-29T21:54:01.917 回答
1

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

button.selected = YES;

当声音开始时,但您不想在NO声音结束之前将其改回。您可以像这样设置计时器:

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

然后实现该soundDone:方法,使其简单地将按钮设置为未选中。

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

于 2013-08-29T21:58:30.487 回答