1

已解决 - 请查看 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

其他一切都运行良好,我必须尝试让这种行为发生,但是考虑到应用程序的性质,如果不解决这个问题,对用户来说将是非常不安全的。

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

干杯!

4

1 回答 1

5

您将要跟踪该UIControlEventTouchCancel事件。

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

于 2012-06-03T22:30:54.067 回答