Iphone 当对象移动到某一帧时,如何停止UIPangestureRecognitor

Iphone 当对象移动到某一帧时,如何停止UIPangestureRecognitor,iphone,objective-c,ipad,uigesturerecognizer,uipangesturerecognizer,Iphone,Objective C,Ipad,Uigesturerecognizer,Uipangesturerecognizer,我有一个图像类型的对象,我正在使用uipangestrerecognizer移动它,当对象到达某一帧时,我需要停止识别uipangestrerecognizer UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)]; [panRecognizer setMinimumNumberOfTouches:1]

我有一个图像类型的对象,我正在使用uipangestrerecognizer移动它,当对象到达某一帧时,我需要停止识别uipangestrerecognizer

    UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)];
    [panRecognizer setMinimumNumberOfTouches:1];
    [panRecognizer setMaximumNumberOfTouches:1];
    [panRecognizer setDelegate:self];
    [templatePhotoPlaceholderView addGestureRecognizer:panRecognizer];

-(void)move:(UIPanGestureRecognizer *)gestureRecognizer
{
    CGPoint translatedPoint = [gestureRecognizer translationInView:templatePhotoPlaceholderView];

    if([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
        _firstX = [imageview center].x;
        _firstY = [imageview center].y;
    }



    translatedPoint = CGPointMake(_firstX+translatedPoint.x, _firstY+translatedPoint.y);
    //NSLog(@" Move center point :%@", NSStringFromCGPoint(translatedPoint));

    [imageview setCenter:translatedPoint];  

}

如何执行此操作?

UIgestureRecognitors具有已启用的属性。文件:

禁用手势识别器,使其不接收触摸。这个 默认值为“是”。如果在一段时间内将此属性更改为“否” 手势识别器当前正在识别一个手势 识别器转换到取消状态

编辑:

只需将enabled属性设置为NO

gestureRecognizer.enabled = NO;

当您需要停止UIPangestureRecognitor识别手势时,只需将此代码行(如jbat100所述)放入
-(void)move:(UIPangestureRecognitor*)手势识别器中即可:

gestureRecognizer.enabled = NO;
在这一行之后,您的gestureRecognizer状态设置为“UIGestureRecognizerStateConcelled”

然后只需在
-(void)move:(UIPanGestureRecognizer*)手势识别器
函数中添加几行即可:

if ([gestureRecognizer state] == UIGestureRecognizerStateCancelled) {
     gestureRecognizer.enabled = YES;
}
你可以使用手势识别器

编辑

下面是代码片段:

- (void)move:(UIPanGestureRecognizer *)gestureRecognizer {
    BOOL cancelPanGesture = YES;
    if (cancelPanGesture) {
        /* 
         After this line gesture recognizer will be disabled, state will be UIGestureRecognizerStateCancelled
         and this method (move:) will fire one more time.
         */
        gestureRecognizer.enabled = NO;
    }
    if (gestureRecognizer.state == UIGestureRecognizerStateCancelled) {
        gestureRecognizer.enabled = YES;
    }
}

设置pangesture.delegate=self,并实现delegate方法

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
     //return NO when you reach the frame
}

你好,杰巴特。你能给我一些行代码的样本吗。对于停止UIGestureRecognizersAnswer没有意义,确切地说,
gestureRecognizer.enabled=YES。如果你能详细说明的话,会更有意义的。我喜欢这个。它将识别器的状态封装在该函数中,而不是将愚蠢的
shouldCancelPan
实例变量放入代码中。使用此技术,当我到达某个点并设置识别器时。enabled=false,它将移动到取消状态,在该状态下,我再次启用它,但手势不会开始,直到我抬起手指然后重新开始。