Objective c 将UIPAngestureRecognitor子类化为在识别前等待条件

Objective c 将UIPAngestureRecognitor子类化为在识别前等待条件,objective-c,ios,uigesturerecognizer,uitouch,subclassing,Objective C,Ios,Uigesturerecognizer,Uitouch,Subclassing,我试着把两个手势一个接一个地联系起来。ui长按手势识别器,然后按ui长按手势识别器 我想检测长按,然后允许识别平移手势 我已经对UIPangestureRecognitor进行了子类化,并添加了一个panEnabled Bool iVar。在initWith框架中,我将panEnabled设置为NO 在Touchs Moved中,我检查它是否已启用,如果已启用,则调用Super Touchs Moved 在我的LongPress手势处理程序中,我循环浏览视图的手势,直到找到我的子类手势,然后将p

我试着把两个手势一个接一个地联系起来。ui长按手势识别器,然后按ui长按手势识别器

我想检测长按,然后允许识别平移手势

我已经对UIPangestureRecognitor进行了子类化,并添加了一个panEnabled Bool iVar。在initWith框架中,我将panEnabled设置为NO

在Touchs Moved中,我检查它是否已启用,如果已启用,则调用Super Touchs Moved

在我的LongPress手势处理程序中,我循环浏览视图的手势,直到找到我的子类手势,然后将panenabled设置为YES

它似乎正在工作,尽管它像是原始的平移手势识别器没有正常工作,也没有设置正确的状态。我知道如果你将uipGestureRecognizer子类化,你需要自己维护状态,但是我认为如果你将uipGastureRecognizer子类化,并且对于所有调用super的方法,它将在其中设置状态

这是我的subclass.h文件

#import <UIKit/UIKit.h>
#import <UIKit/UIGestureRecognizerSubclass.h>

@interface IoUISEListPanGestureRecognizer : UIPanGestureRecognizer {
    int IoUISEdebug;
    BOOL panEnabled;    
}
- (id)initWithTarget:(id)target action:(SEL)action;
@property(nonatomic, assign) int IoUISEdebug;
@property(nonatomic, assign) BOOL panEnabled;

@end

如果创建一个名为canPan的BOOL并包含以下委托方法,则可以将标准UILongPressGestureRecognitor和UIPangestureRecognitor连接到同一视图。在识别长按手势时调用的选择器上,将canPan更改为YES。您可能希望在识别长按后禁用长按,并在平底锅完成后重新启用。-不要忘记在手势识别器上指定代理属性

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
    if (!canPan && [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
      return NO;
    }

    return YES;
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
  return YES;
}

你能分享一下这个手势子类的实际代码吗?在我看来,我正在努力实现这一点,但两个猜测都不能正常工作。每次Longpress都能正常工作。
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
    if (!canPan && [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
      return NO;
    }

    return YES;
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
  return YES;
}