我一直在寻找这个问题的答案一段时间,但没有任何运气。
这就是问题所在:我有四个 UILabel,以及与它们一起使用的声音剪辑。我希望每个标签在播放声音剪辑时都显示突出显示的文本。
问题是当我在模拟器上测试它时,只有最后一个标签被突出显示。
以下是我尝试过的一些事情:
[self playSound:@"this"];
[thisLabel setTextColor:[UIColor orangeColor]];
sleep(1);
[self playSound:@"is"];
[thisLabel setTextColor:[UIColor blackColor]];
[isLabel setTextColor:[UIColor orangeColor]];
[self playSound:@"a"];
[isLabel setTextColor:[UIColor blackColor]];
[aLabel setTextColor:[UIColor orangeColor]];
[self playSound:@"word"];
[aLabel setTextColor:[UIColor blackColor]];
[currentWord setTextColor:[UIColor orangeColor]];
这是当我发现在模拟器中测试时只有最后一个标签会突出显示。
我尝试的下一件事是在 playSound 函数的末尾调用这个函数。
- (void)shiftHighlight:(NSString *)word
{
UILabel *currentWord = [self currentWord];
UILabel *thisLabel = [self thisLabel];
UILabel *isLabel = [self isLabel];
UILabel *aLabel = [self aLabel];
if ([word isEqualToString:@"this"])
{
[thisLabel setHighlighted:YES];
[isLabel setHighlighted:NO];
[aLabel setHighlighted:NO];
[currentWord setHighlighted:NO];
} else if ([word isEqualToString:@"is"]) {
[isLabel setHighlighted:YES];
[thisLabel setHighlighted:NO];
[aLabel setHighlighted:NO];
[currentWord setHighlighted:NO];
} else if ([word isEqualToString:@"a"]) {
[aLabel setHighlighted:YES];
[thisLabel setHighlighted:NO];
[isLabel setHighlighted:NO];
[currentWord setHighlighted:NO];
} else {
[currentWord setHighlighted:YES];
[thisLabel setHighlighted:NO];
[isLabel setHighlighted:NO];
[aLabel setHighlighted:NO];
}
}
在其他地方将突出显示的文本的颜色设置为橙色。这与第一次尝试的效果相同。
最近我尝试对这个函数进行连续调用:
- (void)readSection:(NSString *)section
{
[self playSound:section];
[self shiftHighlight:section];
}
我也尝试过用 NSTimers 做一些事情,但这变得非常混乱,似乎我在和他们一起吠叫错误的树。
在所有标签上启用行为。
所以,如果有人对我有解决方案,或者可以仔细解释如何使用 NSTimers 来解决这个问题,我会非常感谢她。