UIGestureRecognizer 问题

Posted

技术标签:

【中文标题】UIGestureRecognizer 问题【英文标题】:UIGestureRecognizer Issue 【发布时间】:2012-08-20 07:18:30 【问题描述】:

我有一个 UIView 并且我添加了 UILongGestureRecognizerUIPanGestureRecognizer在视图上。当我点击并按住它几秒钟时,我会收到识别 LongPress 的回调。

代码如下图

- (void)addPanGsetureForView:(UIView *)object
    
    UIPanGestureRecognizer * panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureRecognised:)];
    [object addGestureRecognizer:panGesture];
    [panGesture release];


- (void)addLongPressGsetureForView:(UIView *)object

    UILongPressGestureRecognizer * longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(imageLongPressed:)];
    [longPress setMinimumPressDuration:1.0];
    [object addGestureRecognizer:longPress];
    [longPress release];

所以我想使用平移手势移动视图。因此,当在视图上没有移开手指的情况下识别出长按时,我希望平移手势得到识别。如果我移开手指并再次点击并平移它,它就会被识别。所以请帮我解决这个问题。 提前致谢

【问题讨论】:

在不添加UILongPressGestureRecognizer的情况下是否可以工作? 【参考方案1】:

取自 Apple 在 Gesture Recognizers 上的文档

允许同时手势识别

默认情况下,没有两个手势识别器可以尝试同时识别他们的手势。但是您可以通过实现gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizerDelegate 协议的可选方法)来更改此行为。当接收手势识别器的识别会阻止指定手势识别器的操作时调用此方法,反之亦然。返回 YES 以允许两个手势识别器同时识别他们的手势。

刚刚对此进行了测试,我认为它可以解决您的问题!

【讨论】:

以上是关于UIGestureRecognizer 问题的主要内容,如果未能解决你的问题,请参考以下文章

点击按钮时取消 UIGestureRecognizer?

UIGestureRecognizer 问题

UIGestureRecognizer 从头开始​​制作 UISlider

如何用 UIGestureRecognizer 替换 TouchesBegan

UITableViewCell 内的 UIView 上的 UIGestureRecognizer

`UIGestureRecognizer`命中测试