使按钮能够同时执行Touch Up Inside
和Touch Down Repeat
的最佳方法是什么?有点像iPhone上的“主页”按钮:一次单击进入主屏幕,但快速单击两次即可打开多任务栏。现在,我的按钮已经连接了这两种方法,但是Touch Up Inside
方法(毫无疑问)在Touch Down Repeat
发生之前就被调用了。
我可以想出几种方法来实现此目的(使用Touch Up Inside方法等待一秒钟,看看是否再执行一次单击,第一次单击后将第二个按钮隐式地移到适当位置,等等),但它们全部似乎有点骇人听闻,并且容易造成性能损失和错误。我找到了tapCount
属性,但这是UITouch而不是UIButton的属性,因此if([_buttonAddItems tapCount] > 1) {} else if([_buttonAddItems tapCount] == 1)
似乎是最有效的实现方式,它不起作用。
这种事情是否有最佳实践?否则,是否有人会偏向于完成此任务?
最佳答案
尝试断开两个触摸事件与按钮的连接,然后将两个点击手势识别器挂接到该按钮上。这是一个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];
关于ios - 既有内部Touch Up又有触摸重复的UIButton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18281197/