已解决 - 请看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 。
其他一切工作都很完美,我必须尝试才能发生这种行为,但是考虑到应用程序的性质,如果没有解决这个问题对用户来说是非常不安全的。
任何人都可以解释为什么当我“掌控”屏幕时没有检测到按钮释放?
干杯!
答案 0 :(得分:5)
您需要跟踪UIControlEventTouchCancel
事件。
如果将初始触摸重新解释为另一个手势(例如滚动),则会发生UIControlEventTouchCancel
事件。