iOS第二次触摸永远不会触发UIControlEventTouchUpInside

时间:2015-10-10 17:27:12

标签: ios objective-c xcode

嘿,让我说我有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:

3 个答案:

答案 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];