我经常需要通过按住按钮来触发一系列事件。想一个+
增加字段的按钮:点击它应该将其增加 1,但点击并按住应该每秒增加 1,直到释放按钮。另一个示例是在音频播放器类型应用程序中按住后退或前进按钮时的擦洗功能。
我通常采用以下策略:
- On
touchDownInside
我设置了一个具有所需间隔的重复计时器。
- On
touchUpInside
我使计时器无效并释放。
但对于每个这样的按钮,我需要一个单独的计时器实例变量、2 个目标操作和 2 个方法实现。 (这是假设我正在编写一个通用类并且不想对同时触摸的最大数量施加限制)。
有没有更优雅的方法来解决我所缺少的这个问题?
通过以下方式注册每个按钮的事件:
[button addTarget:self action:@selector(touchDown:withEvent:) forControlEvents:UIControlEventTouchDown];
[button addTarget:self action:@selector(touchUpInside:withEvent:) forControlEvents:UIControlEventTouchUpInside];
对于每个按钮,设置tag
属性:
button.tag = 1; // 2, 3, 4 ... etc
在处理程序中,执行您需要的任何操作。通过标签识别按钮:
- (IBAction) touchDown:(Button *)button withEvent:(UIEvent *) event
{
NSLog("%d", button.tag);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)