ios - 既有内部Touch Up又有触摸重复的UIButton?

标签 ios uibutton touch-up-inside

使按钮能够同时执行Touch Up InsideTouch 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/

相关文章:

iphone - 如何在 cocos2d Xcode 中平滑移动按钮

ios - UIButton 的 .touchUpInside 事件不起作用

swift - UIButton 子类使用其大小通过自动布局设置角半径

ios - 添加 subview 后无法单击 UIButton

ios - UIButton 即使在整个区域也没有接触

iOS/swift : how to detect touch action on a UITextField

ios - 在设备方向更改时更改 UIView/UIViewController

ios - 在 Xcode 中,NSFetchRequest 只返回对象,而不是它们的属性

objective-c - 每月更新核心数据对象

ios - UIButton 在隐藏和取消隐藏后中断