如果在一定时间内没有与之交互,请隐藏按钮

时间:2012-06-01 12:51:46

标签: ios button timer

我希望在android上的zoomControl中实现类似的行为,其中按钮出现,并且如果与之交互则保持可见,但如果它们在一段时间内没有被交互,则它们逐渐消失。

一般逻辑将是这样的:

显示按钮:在我想要显示的时间开始某种计时器/事件

如果发生与按钮的交互,则将计时器/事件重置为新的时间量

如果点击了计时器/事件,请隐藏按钮。

我可以运行一些performSelector afterDelay,一个隐藏按钮的方法,每次交互,并让performSelector调用一些计数/标记的隐藏方法按钮这会随着每次互动而增加..这会起作用,但它似乎相当不优雅,如:

show button:增量计数:performSelector在5秒后隐藏

按钮动作:增量计数:执行选择器5秒后隐藏

隐藏:如果count,则递减计数!= 0不执行任何操作,否则隐藏按钮

有更好的方法吗?这对我来说感觉很糟糕。

2 个答案:

答案 0 :(得分:3)

使用

制作NSTimer
myButtonHideTimer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(hideButton:) userInfo:nil repeats:NO];

然后,如果您在计时器触发呼叫之前进行了互动

[myButtonHideTimer invalidate];//This stops the event from triggering

然后重新创建计时器以重置触发时间

答案 1 :(得分:0)

我会选择performSelector:withObject:afterDelay:路由,因为您不必处理专用的计时器对象。但是,不知道你需要什么样的柜台。

  1. 致电performSelector:withObject:afterDelay:
  2. 发生用户互动时,请致电cancelPreviousPerformRequestsWithTarget:selector:object:。然后再次致电performSelector:withObject:afterDelay: