Fer*_*ndo 17 iphone objective-c touch taps ios
当用户单击我的视图时,我需要一个特定的方法来运行.当用户双击时,我需要另外一种方法.
问题是双击会触发单击,它会在我的逻辑中引入错误.我不能使用UIGestureRecognizer,因为我需要跟踪这些点.
我尝试了一些布尔,但没有机会.我也试过了cancel/perfomSelector-delay技术,但它不起作用(这很奇怪,因为其他论坛上的其他人说它有效,也许模拟器触摸检测有所不同?)
我试图让用户设置板块的位置(拖动,旋转),但我需要知道片段交叉点,剪切到板区域等,这就是为什么一个简单的布尔值不能解决问题.
提前致谢!
ser*_*gio 45
检查一下,看起来你正在寻找的是:
在代码下方使用UITapGestureRecognizer来处理单击和双击.该代码被设计为如果我们获得双击事件则不会触发单击事件.诀窍是使用requireGestureRecognizerToFail来询问单击手势等待双击事件在触发之前失败.因此,当用户点击屏幕时,单击手势识别器将不会触发事件直到双击手势识别器.如果双击手势识别器识别出该事件,则它将触发双标签事件并跳过单击事件,否则将触发单击事件.
UITapGestureRecognizer *doubleTapGestureRecognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleDoubleTap:)];
doubleTapGestureRecognizer.numberOfTapsRequired = 2;
//tapGestureRecognizer.delegate = self;
[self addGestureRecognizer:doubleTapGestureRecognizer];
//
UITapGestureRecognizer *singleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
singleTapGestureRecognizer.numberOfTapsRequired = 1;
[singleTapGestureRecognizer requireGestureRecognizerToFail: doubleTapGestureRecognizer];
//tapGestureRecognizer.delegate = self;
[self addGestureRecognizer:singleTapGestureRecognizer];
Run Code Online (Sandbox Code Playgroud)
可能我不明白你的意思是"我需要跟踪点数",但我没有看到用手势识别器做这个问题.
斯威夫特 3 解决方案:
doubleTap = UITapGestureRecognizer(target: self, action:#selector(self.doubleTapAction(_:)))
doubleTap.numberOfTapsRequired = 2
singleTap = UITapGestureRecognizer(target: self, action:#selector(self.singleTapAction(_:)))
singleTap.numberOfTapsRequired = 1
singleTap.require(toFail: doubleTap)
self.view.addGestureRecognizer(doubletap)
self.view.addGestureRecognizer(singleTap)
Run Code Online (Sandbox Code Playgroud)
在代码行singleTap.require(toFail: doubleTap)中,我们强制单击等待并确保单击不是双击。这意味着我们要求确保双击事件失败,因此它被视为单击。
| 归档时间: |
|
| 查看次数: |
7679 次 |
| 最近记录: |