嘿,让我说我有2个按钮并设置这样的选择器:
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:
?
答案 0 :(得分:1)
检查UIView的multipleTouchEnabled属性。它的默认值为NO
答案 1 :(得分:0)
我已经制作了一个演示项目来研究iOS中按钮的事件。 我的演示似乎在所有情况下都能正常工作,由于时间限制我无法在这里添加足够的解释,所以,这里是git Repo的链接.... click Here
看看你能找到什么...... 快乐的编码。 :)
答案 2 :(得分:0)
我在iPhone 5s + iPhone 6 + iPhone 6 Plus上使用iOS 7.1 + iOS 8.0和iOS 9.0.2进行了测试,效果很好。好吧,如果它总是发生,你的事件目标层次结构是错误的或者在某种程度上被打破。在添加之前尝试删除所有目标;
[button1 removeTarget:nil action:NULL forControlEvents:UIControlEventAllEvents];
[button2 removeTarget:nil action:NULL forControlEvents:UIControlEventAllEvents];