【发布时间】: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