UIButton同时具有Touch Up Inside和Touch Repeat?

时间:2013-08-16 19:57:47

标签: ios uibutton touch-up-inside

使按钮能够执行Touch Up Inside操作和Touch Down Repeat操作的最佳方法是什么?有点像iPhone上的Home按钮:只需点击一次即可进入主屏幕,但两次快速点击可打开多任务栏。现在我的按钮连接了两个方法,但Touch Up Inside方法(不出所料)在Touch Down Repeat发生之前被调用。

我可以提出一些方法来解决这个问题(让Touch Up Inside方法等待一秒钟,看看在执行之前是否有另一个点击,第二个按钮在第一次点击后无形地移动到位等)但他们似乎都很苛刻,并且对性能损失和漏洞持开放态度。我找到了tapCount属性,但是对于UITouch而不是UIButton,所以if([_buttonAddItems tapCount] > 1) {} else if([_buttonAddItems tapCount] == 1),这似乎是最有效的方式,它不起作用。

这种事情有最好的做法吗?或者如果没有,是否有人有一种首选的方法来完成这项工作?

1 个答案:

答案 0 :(得分:4)

尝试断开按钮上的两个触摸事件,然后将两个轻触手势识别器挂钩。这是一个link to an answer,解释了如何设置两个手势识别器,以便其中一个识别单击,另一个识别双击:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doSingleTap)];
singleTap.numberOfTapsRequired = 1; 
[myButton addGestureRecognizer:singleTap];

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doDoubleTap)];
doubleTap.numberOfTapsRequired = 2; 
[myButton  addGestureRecognizer:doubleTap];
// This is the "secret sauce":
[singleTap requireGestureRecognizerToFail:doubleTap];