UIGestureRecognizer - 检测像触控板一样的点击和拖动

Tom*_*Dev 10 objective-c ios

有没有办法级联UIGestureRecognizers来检测点击然后拖动.例如,我想检测用户何时点击然后拖动他的手指.

这与拖鞋在拖鞋上的工作方式类似.

所以我想检测一个水龙头,然后我想让UIPanGestureRecognizer给我发送连续更新.

我想使用标准的UIGesture类来创建这个新手势,而不是使用原始触摸创建自己的手势.

这甚至可能吗?

Tom*_*Dev 23

虽然我没有按照我的预期找到解决方案,但我找到了更好的解决方案.

通过使用UILongPressGrstureRecognizer,令人惊讶的是它能够实现轻击和拖动.

你必须:

  1. 将numberOfTapsRequired设置为1以检测初始点击.
  2. 将minimumDuration设置得更小,以便更快地检测拖动而无需等待

例如:

UILongPressGestureRecognizer *mouseDrag = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleDrag:)];
mouseDrag.numberOfTapsRequired=1;
mouseDrag.minimumPressDuration=0.05;
[clickLeft requireGestureRecognizerToFail:mouseDrag];
Run Code Online (Sandbox Code Playgroud)

要处理拖动,您必须确定状态以适当地处理它作为连续手势.

  • 这很有效,谢谢!但是有一个问题:0的默认`numberOfTapsRequired`对我来说没问题 - 你有什么问题吗? (4认同)
  • 还使用了抽头数0和最小按压持续时间0,给了我正在寻找的拖动行为(夹子按钮).如果您想使用Tap Pad的"拖动锁定"样式行为,似乎您使用了数量1. (2认同)