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

标签 iphone ios cocoa-touch

我有一个 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/

相关文章:

iPhone iOS 如何就地翻转/反射(reflect)任何 UIView?

iphone - 如何获取 iPhone 上图像上像素的 RGB 值

objective-c - 我打算如何释放从类方法返回的数组?

iphone - iOS Development : Why do I always get the "A connection failure occurred" on the 1st attempt, 但成功就下了吗?

php - EasyAPNS 无法连接到数据库

ios - 仅比较 Date 对象中的时差

iphone - 无法在 IOS 中将一个类包含到另一个类中

objective-c - 是否有必要在将字符串与另一个变量进行比较之前将其分配给变量?

ios - Xcode 6 中与 iPhone 5/6/6+ 屏幕分辨率相关的相同按钮位置

iphone - 为什么我的completionBlock永远不会在NSOperation中被调用?