gpt4 book ai didi

iphone - 需要 TableViewCell 在被触摸时闪烁

转载 作者:行者123 更新时间:2023-11-29 13:23:10 24 4
gpt4 key购买 nike

我有一个 TableViewCell,我想在它被点击时闪烁(即快速突出显示几次)。

到目前为止,我已经使用定时器实现了这个功能,如下所示:

-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
NSTimer *blinkTimer = [[NSTimer scheduledTimerWithTimeInterval:.05 target:self selector:@selector(toggleHighlightedMenuCell) userInfo:nil repeats:YES] retain];
self.blinkTimer = blinkTimer;
[blinkTimer release];
}

-(void) toggleHighlightedMenuCell
{
if (self.highlightedMenuCell.isHighlighted)
{
self.highlightedMenuCell.highlighted = NO;
}
else
{
self.highlightedMenuCell.highlighted = YES;
}

self.blinkTimerCounter++;

if (self.blinkTimerCounter == 2)
{
self.blinkTimerCounter = 0;
[self.blinkTimer invalidate];

//execute some code
}
}

这个问题似乎是在它完成闪烁之前开始执行 //execute some code 部分中的代码。谁能想出更好的方法来实现这一点?

最佳答案

我认为您的时间间隔太短,无法有效查看。我不认为“执行一些代码”实际上是在闪烁结束之前执行的,它只是看起来像。也不需要执行保留和释放语句或将计时器分配给变量。 run loop 保留定时器,并在它失效时释放它。选择器,虽然它的名字后面应该有一个冒号,因为计时器将自己作为参数传递。所以代码可以稍微简化为:

-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(toggleHighlightedMenuCell:) userInfo:nil repeats:YES];
}

-(void) toggleHighlightedMenuCell:(NSTimer *) aTimer
{
if (self.highlightedMenuCell.isHighlighted)
{
self.highlightedMenuCell.highlighted = NO;
}
else
{
self.highlightedMenuCell.highlighted = YES;
}

self.blinkTimerCounter++;

if (self.blinkTimerCounter == 2)
{
self.blinkTimerCounter = 0;
[aTimer invalidate];

//execute some code
}
}

我假设您已经在其他地方初始化了 blinkTimerCounter。

关于iphone - 需要 TableViewCell 在被触摸时闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13849007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com