【问题标题】:iPhone: Button Touch Events - Release not Firing?iPhone:按钮触摸事件 - 释放不触发?
【发布时间】:2012-06-03 22:14:45
【问题描述】:

已解决 - 请参阅 Darren 的回复以寻求解决此问题的有效方法。

您好,感谢您花时间阅读我的问题。

我在检测到IBAction UIButton 的释放时遇到了一些奇怪的行为:当我在界面上移动手掌时,检测到按钮按下,但没有释放!

我有一组控件,每个控件都有自己的IBAction UIButton。这是我的按钮如何反应和行为的示例:

- (IBAction)up1start:(id)sender 
{   
    if(!buttonIsPressed && deviceIsConnected)
    {
        NSLog(@"BUTTON UP 1 PRESSED!");
        NSString *byteString = @"7E 01";
        sendTimer =[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(sendByte:) userInfo:byteString repeats:YES];
        buttonIsPressed = true;
    }else{
        NSLog(@"Cant press two buttons or connection is closed");
    }
}
- (IBAction)up1stop:(id)sender 
{
    NSLog(@"BUTTON UP 1 RELEASED!");
    [ self buttonRelease ];
}

我在UIButton up1 上附加了以下事件 - 由于我正在进行的故障排除工作,可能超出了必要:

  • 着陆 - up1start
  • 触摸拖动退出 - up1stop
  • 触摸外部拖动 - up1stop
  • 内部修饰 - up1stop
  • 在外面修饰 - up1stop

对于这些事件都不会导致我的“up1stop”动作被触发,我有点困惑。同样,我可以通过将手掌按在界面上然后松开或稍微移动来重现此问题。作为记录,我为每个按钮启用了exclusiveTouch

其他一切都运行良好,我确实必须尝试让这种行为发生,但鉴于应用程序的性质,如果不解决此问题,用户将非常不安全。 p>

谁能解释为什么当我“手掌”屏幕时没有检测到按钮释放?

干杯!

【问题讨论】:

  • 当您只是正常按下按钮而不是手掌时,up1stop 方法是否会触发?
  • @Msencenb - 确实如此。一切都完美无缺,除了这个小错误,我似乎可以打破应用程序对我正在执行的操作的理解。我在下面选择了一个回复,这被证明是我正在寻找的解决方案。通过“手掌”界面,应用程序将我的动作解释为“按下”然后“滚动”,这导致我已经从触发中附加了任何事件。通过将UIControlEventTouchCancel 添加到每个stop 操作,问题已得到解决。

标签: iphone ios cocoa-touch uibutton


【解决方案1】:

您需要跟踪 UIControlEventTouchCancel 事件。

如果将初始触摸重新解释为另一个手势(例如滚动),则会发生 UIControlEventTouchCancel 事件。

【讨论】:

  • 感谢您及时且内容丰富的回复!我现在将对其进行测试并返回结果!
  • 非常感谢!效果完美!我将UIControlEventTouchCancel 连接到相应的Release 动作,现在按钮不再粘连!干杯!我需要收集一些代表,以便我可以适当地感谢您对这个问题的帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
  • 2019-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多