Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 带内部触控和重复触控的UI按钮?_Ios_Uibutton_Touch Up Inside - Fatal编程技术网

Ios 带内部触控和重复触控的UI按钮?

Ios 带内部触控和重复触控的UI按钮?,ios,uibutton,touch-up-inside,Ios,Uibutton,Touch Up Inside,让按钮既能进行内部触碰操作,又能进行触碰重复操作的最佳方法是什么?有点像iPhone上的Home(主页)按钮:一次点击进入主屏幕,但两次快速点击打开多任务条。现在我的按钮已经连接了这两种方法,但是在触地重复之前调用了触地内部方法(毫不奇怪) 我可以想出一些方法来实现这一点(让“内部润色”方法在执行之前等待一秒钟,看看是否再次单击,让第二个按钮在第一次单击后不可见地移动到位,等等),但它们看起来都有点像黑客,并且容易出现性能损失和bug。我找到了tapCount属性,但它是用于UITouch而不是

让按钮既能进行
内部触碰
操作,又能进行
触碰重复
操作的最佳方法是什么?有点像iPhone上的Home(主页)按钮:一次点击进入主屏幕,但两次快速点击打开多任务条。现在我的按钮已经连接了这两种方法,但是在
触地重复之前调用了
触地内部
方法(毫不奇怪)

我可以想出一些方法来实现这一点(让“内部润色”方法在执行之前等待一秒钟,看看是否再次单击,让第二个按钮在第一次单击后不可见地移动到位,等等),但它们看起来都有点像黑客,并且容易出现性能损失和bug。我找到了
tapCount
属性,但它是用于UITouch而不是UIButton的,因此
if([\u buttonAddItems tapCount]>1){}否则if([\u buttonAddItems tapCount]==1)
,这似乎是最有效的方法,不起作用


这类事情有最佳实践吗?或者,如果没有,是否有人有更好的方法来完成此操作?

尝试将两个触控事件从按钮上断开,并将两个触控手势识别器挂在按钮上。下面是一个示例,说明了如何设置两个手势识别器,以便其中一个识别单个点击,另一个识别双点击:

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

尝试将两个触控事件从按钮上断开,并将两个触控手势识别器挂到按钮上。下面是一个示例,说明了如何设置两个手势识别器,以便其中一个识别单个点击,另一个识别双点击:

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

我以前从未玩过手势识别器,但那看起来正是我想要的,谢谢!我以前从未玩过手势识别器,但那看起来正是我想要的,谢谢!