UITapGestureRecognizer和UIPanGestureRecognizer

时间:2013-12-19 21:24:35

标签: ios uiimageview uigesturerecognizer uipangesturerecognizer uitapgesturerecognizer

我想点击屏幕时创建并查看uiimageview。 在我抬起手指之前,我想将uiimageview移动到屏幕周围,只有当我拿下手指时才会设置图像。继承人我做了什么:

- (IBAction)tap:(UITapGestureRecognizer *)recognizer {

    CGPoint location = [recognizer locationInView:self.view];

    UIImageView *circle = [[UIImageView alloc] initWithFrame:CGRectMake(location.x, location.y, 50, 50)];
    circle.userInteractionEnabled = YES;
    [circle setImage:[UIImage imageNamed:@"monkey_1.png"]];
    [self.view addSubview:circle];

    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:circle action:nil];
    [recognizer requireGestureRecognizerToFail:pan];

    CGPoint translation = [pan translationInView:circle];
    pan.view.center = CGPointMake(pan.view.center.x + translation.x, pan.view.center.y + translation.y);
    [pan setTranslation:CGPointMake(0, 0) inView:self.view];
}

1 个答案:

答案 0 :(得分:0)

只需UIPanGestureRecognizerUILongPressGestureRecognizer即可完成此操作。在手势处理方法中,检查识别器的state属性,并在UIGestureRecognizerStateEnded时显示图像(即当用户从屏幕上抬起手指时)。 E.g:

- (void)handleGesture:(UILongPressGestureRecognizer *)recognizer {
    if(recognizer.state == UIGestureRecognizerStateEnded) {
       // gesture ended: show the image
    }
    else if(recognizerState == UIGestureRecognizerStateBegan) {
        // this code runs when the gesture is started. 
    }
    else if(recognizerState == UIGestureRecognizerStateChanged) {
        // gesture is in progress
    }
}
相关问题