iOS第二次触摸从不触发UIControlEventTouchUpInside
嘿,假设我有两个按钮,并按如下方式设置选择器:iOS第二次触摸从不触发UIControlEventTouchUpInside,ios,objective-c,xcode,Ios,Objective C,Xcode,嘿,假设我有两个按钮,并按如下方式设置选择器: button1 addTarget:self action:@selector(actionPick:) forControlEvents:UIControlEventTouchDown]; button1 addTarget:self action:@selector(actionUp:) forControlEvents:UIControlEventTouchUpInside]; button2 addTarget:self actio
button1 addTarget:self action:@selector(actionPick:) forControlEvents:UIControlEventTouchDown];
button1 addTarget:self action:@selector(actionUp:) forControlEvents:UIControlEventTouchUpInside];
button2 addTarget:self action:@selector(actionPick:) forControlEvents:UIControlEventTouchDown];
button2 addTarget:self action:@selector(actionUp:) forControlEvents:UIControlEventTouchUpInside];
这两种方法都工作得很好,只是如果我执行以下操作,actionUp:
不会被调用
TouchDown button1 //works
TouchDown button2 //works
Touch Up button2 //works
Touch Up button1 //not called
所以我
- 按第一个按钮(手指放在上面)
- 打第二个
- 释放第二个
- 松开第一个按钮
你知道怎么解决这个问题吗?为什么
actionUp:
似乎在我举起手指之前就被使用了?检查UIView的multipleToucheEnabled属性。它的默认值是NO我做了一个演示项目来研究iOS中按钮的事件。
我的演示似乎在所有场景中都能正常工作,由于时间限制,我无法在这里添加足够的解释,因此,这里是指向git回购的链接。。。。
看看你能找到什么。。。
快乐编码:) 我在iphone5s+iphone6+iphone6plus上用ios7.1+ios8.0和ios9.0.2进行了测试,效果很好。如果这种情况经常发生,那么您的事件目标层次结构是错误的,或者在某种程度上被破坏了。在像这样添加之前,尝试删除所有目标
[button1 removeTarget:nil action:NULL forControlEvents:UIControlEventAllEvents];
[button2 removeTarget:nil action:NULL forControlEvents:UIControlEventAllEvents];
我试图重现这种行为,但我做不到。我的两个按钮按预期工作:触地按钮1->触地按钮2->触地按钮2->触地按钮1你试过不同版本的iOS吗?它们的行为方式是否相同?我无法在运行9.1beta的iPhone 6上重现此错误。我已尝试直接从情节提要连接这些操作,并且似乎按照预期工作: