1

让按钮既可以执行Touch Up Inside操作又可以执行Touch Down Repeat操作的最佳方法是什么?有点像 iPhone 上的 Home 按钮:单击一次进入主屏幕,但快速单击两次打开多任务栏。现在我的按钮已经连接了这两种方法,但是Touch Up Inside方法(不出所料)在Touch Down Repeat发生之前被调用。

我可以想出一些方法来解决这个问题(让 Touch Up Inside 方法等待一秒钟,看看在执行之前是否有另一次点击,在第一次点击后让第二个按钮不可见地移动到适当的位置,等等),但它们都是似乎有点hack-y并且对性能损失和错误持开放态度。我找到了该tapCount属性,但它是用于 UITouch 而不是 UIButton,因此if([_buttonAddItems tapCount] > 1) {} else if([_buttonAddItems tapCount] == 1),这似乎是最有效的方法,但它不起作用。

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

4

1 回答 1

4

尝试从您的按钮断开两个触摸事件,并将两个轻击手势识别器连接到它。这是一个答案的链接,该链接解释了如何设置两个手势识别器,以便其中一个识别单击,另一个识别双击:

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];
于 2013-08-16T20:04:43.853 回答