我希望在android上的zoomControl中实现类似的行为,其中按钮出现,并且如果与之交互则保持可见,但如果它们在一段时间内没有被交互,则它们逐渐消失。
一般逻辑将是这样的:
显示按钮:在我想要显示的时间开始某种计时器/事件
如果发生与按钮的交互,则将计时器/事件重置为新的时间量
如果点击了计时器/事件,请隐藏按钮。
我可以运行一些performSelector
afterDelay
,一个隐藏按钮的方法,每次交互,并让performSelector
调用一些计数/标记的隐藏方法按钮这会随着每次互动而增加..这会起作用,但它似乎相当不优雅,如:
show button:增量计数:performSelector在5秒后隐藏
按钮动作:增量计数:执行选择器5秒后隐藏
隐藏:如果count,则递减计数!= 0不执行任何操作,否则隐藏按钮
有更好的方法吗?这对我来说感觉很糟糕。
答案 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:
路由,因为您不必处理专用的计时器对象。但是,不知道你需要什么样的柜台。
performSelector:withObject:afterDelay:
。cancelPreviousPerformRequestsWithTarget:selector:object:
。然后再次致电performSelector:withObject:afterDelay:
。