1

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

一般逻辑是这样的:

显示按钮:在我希望它显示的时间开始某种计时器/事件

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

如果计时器/事件被击中,隐藏按钮。

我可以在performSelector afterDelay每次交互时运行一些隐藏按钮的方法,并让隐藏方法按钮由performSelector检查调用一些计数/标志,每次交互都会增加..这会起作用,但似乎相当不优雅,例如:

显示按钮:递增计数:执行选择器 5 秒后隐藏

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

隐藏:如果 count !=0 什么也不做,则减少计数,否则隐藏按钮

有没有更好的办法?这对我来说只是感觉很笨拙。

4

2 回答 2

3

NSTimer一个

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

然后,如果您在计时器触发呼叫之前获得交互

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

然后重新创建定时器来重置触发时间

于 2012-06-01T12:55:57.910 回答
0

我会走这performSelector:withObject:afterDelay:条路,因为您不必处理专用的计时器对象。不过,不知道你需要计数器做什么。

  1. 打电话performSelector:withObject:afterDelay:
  2. 当发生用户交互时,调用cancelPreviousPerformRequestsWithTarget:selector:object:. 然后再打电话performSelector:withObject:afterDelay:
于 2012-06-01T13:11:25.560 回答