2

在我的应用程序中,我有一个 tapGesture、panGesture、rotationGesture 和 pinchGesture。tapGesture 是所有手势的起点,它向我展示了选择了哪个子视图。

在我输入一个处理 ImagePicker 的按钮后,子视图仍处于选中状态,因此它仍在处理手势。

我的问题:是否有任何声明停止处理手势?

编辑

我不需要gestureRecognizer,因此我将它们置于非活动状态:

panRecognizer.enabled = NO;
pinchRecognizer.enabled = NO;
rotationRecognizer.enabled = NO;

因此,如果我需要它们,我希望在处理 tapRecognizer 时让它们工作,但这里的识别器不会从非活动状态变为活动状态。

[panRecognizer isEnabled];
pinchRecognizer.enabled = YES;
rotationRecognizer.enabled = YES;

编辑

我的视图是一个 ViewController,子视图在 imageView 上。
识别器被分配给 self.imageView。
在第一种方法中,我禁用识别器,在第二种方法中,我启用它们

- (IBAction)photo: (id) sender {

    panRecognizer.enabled = NO;
    pinchRecognizer.enabled = NO;
    rotationRecognizer.enabled = NO;

    UIImagePickerController* picker = [[UIImagePickerController alloc]init];
    picker.delegate = self;
    picker.allowsEditing = NO;

    @try {

        picker.sourceType=UIImagePickerControllerSourceTypeCamera;
        [self presentModalViewController:picker animated:YES];
    }
    @catch (NSException * e) {

        UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Error" message:@"Camera is not available" 
                                                        delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease];
        [alert show];
    }
    [picker release];
}

- (IBAction)oneTap: (UIGestureRecognizer*)gestureRecognizer { 
    NSLog(@"oneTap");
    float differenz = 2000;
    [panRecognizer isEnabled];
    pinchRecognizer.enabled = YES;
    rotationRecognizer.enabled = YES;

    for (UIView* const subview in array) {  
        subview.opaque = YES;
        CGPoint const point = [gestureRecognizer locationInView:self.imageView];

            float zwischenS = sqrt(powf(point.x - subview.frame.origin.x,2)) + sqrt(powf(point.y - subview.frame.origin.y,2));


            if (differenz > zwischenS ) {

                differenz = sqrt(powf(point.x - subview.frame.origin.x,2)) + sqrt(powf(point.y - subview.frame.origin.y,2));
                newView.layer.borderColor = [[UIColor clearColor]CGColor];
                newView = subview;

                subview.layer.borderColor = [[UIColor whiteColor]CGColor];
                subview.layer.borderWidth = 3.0f;
                [imageView bringSubviewToFront: subview]; 
            } 
    }
} 

我的错误是什么?

提前致谢

4

2 回答 2

4

财产[UIGestureRecognizer enabled]

于 2012-04-26T07:59:45.933 回答
2
//YOU CREATE GESTURES LIKE THIS
 UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]
                                      initWithTarget:self  action:@selector(handlePanGesture:)];

//YOU ADD THEM LIKE THIS
     [self.view addGestureRecognizer:panGesture];

//AND YOU REMOVE THEM LIKE THIS
     [self.view removeGestureRecognizer:panGesture];

我不确定你是如何编码的,但我希望这能给你一个想法

于 2012-04-26T08:49:35.373 回答