【问题标题】:Check whether two button be pressed simultaneously检查两个按钮是否同时按下
【发布时间】:2014-05-22 03:51:07
【问题描述】:

我正在尝试检查是否同时按下了两个按钮。只有同时按下两者时,才能执行操作。是的,每次按下其中一个按钮时,我都可以启动计时器。并且可以比较直到按下第二个按钮的时间。 或许还有更优雅的方式。

提前致谢

【问题讨论】:

  • 您可能希望使用手势识别器而不是按钮。
  • 你的意思是他们需要同时按下(或在很短的时间内)?或者您的意思是它们同时按下(例如键盘上的 shift 键和字符,或者在录音机上录制和播放)?
  • 是的,我的意思是同时。

标签: objective-c uibutton nstimer


【解决方案1】:

UIButton 有一个state 属性。按下按钮一时,检查按钮二的状态,反之亦然。

查看状态的方法如下:

BOOL buttonPressed = self.button1.state & UIControlStateHighlighted;

【讨论】:

  • 我认为如果您同时触摸两个按钮,这将不起作用。仅当您触摸并按住一个,然后再触摸另一个。
  • 如果问过上面的问题来确定他的意思。但是在他们同时被按下的情况下它不会失败。一个事件必须在另一个事件之前处理,第二个事件会注意到第一个按钮已被按下。
  • 我注意到在不同线程上同时处理事件。我弄错了吗?
  • 修复了测试:添加了.state并将UIControlStateSelected更改为UIControlStateHighlighted。请注意,按钮必须连接到 touchdown,而不是通常的 touchup。它们是否在不同的线程上并不重要。
  • 刚刚测试了这两个触摸和触摸事件它甚至可以同时触摸。
【解决方案2】:
  • 为最后一次按下按钮的时间创建一个 NSDate 实例变量
  • 将其初始化为 0。
  • 按下任一按钮时,检查变量中是否有时间
  • 如果没有,请将当前时间放入其中并返回。
  • 如果有时间,检查是否足够接近
    • 如果不够接近,请将当前时间放入变量中并返回。
    • 如果足够接近,请将时间设置为 0 并执行任何操作。

【讨论】:

  • 感谢您的快速回复。我明白原理,但你能给我举个例子吗?对我有很大帮助,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 2020-06-28
  • 2020-01-02
  • 1970-01-01
相关资源
最近更新 更多