Xcode如何在多次触摸后删除图像?

时间:2014-06-20 10:34:30

标签: ios ipad

我使用此代码触摸'云'的事件动画。所有工作正常,但我想在用户点击云3次后淡出/删除云。所以我希望它们在第三次触摸后消失。我该怎么做?

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

UITouch *touch = [touches anyObject];
CGPoint touchLocation = [touch locationInView:self.view];

CGRect cloudBLRect = [[[self.cloudBL layer] presentationLayer] frame];


if (CGRectContainsPoint(cloudBLRect, touchLocation)) {
    NSLog(@"cloudBL tapped!");

    cloudBLPressed = true;

    [UIView animateWithDuration:1.0
                          delay:0.0
                        options:UIViewAnimationOptionCurveEaseInOut
                     animations:^{
                         self.cloudBL.center = CGPointMake(200, 600);
                         self.cloudBL.alpha = 0.5;


                     }
                     completion:^(BOOL finished) {
                         [UIView animateWithDuration:2.0
                                               delay:2.0
                                             options: UIViewAnimationOptionCurveEaseInOut
                                          animations:^{

                                               self.cloudBL.center = CGPointMake(100, 700);
                                              self.cloudBL.alpha = 0.5;


                                          } completion:^(BOOL finished) {
                                              self.cloudBL.alpha = 1.0;


                                          }];


   } else {
            NSLog(@"cloud not tapped.");
            return;
                      }



 if (cloudBLPressed) return;

 }

4 个答案:

答案 0 :(得分:0)

你可以这样做:

UITapGestureRecognizer * tripleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(yourAction:)];

tripleTap.numberOfTapsRequired = 3;

[yourView addGestureRecognizer:tripleTap];

答案 1 :(得分:0)

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOnImage:)];
[cloud addGestureRecognizer:tapRecognizer];

}

- (void)tapOnImage:(UITapGestureRecognizer *)gesture
{
    tapsCounter++;

    if (tapsCounter == 3)
    {
        // do your stuff

        tapsCounter = 0;
    }
}

我建议您将此逻辑移到代表 cloud 对象的UIImageView子类中。

答案 2 :(得分:0)

获取变量count并将其初始化为0.每次触摸时,将其递增1.同时检查touchGesture方法,如果count变量等于2,则设置{{1云到alpha

这样的事情: 在.m文件中使用私有int vairiable:0.0

int count;
 in viewDidLoad: count = 0; cloudView.alpha = 1.0;

在动画逻辑中添加它。希望有所帮助。

您可以在代码中设置它:

    - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
count++;
if(count<2)
{
     cloudView.alpha-=0.33;
} 

else {
    cloudView.alpha = 0.0;
}
              }

答案 3 :(得分:0)

将适当的委托UIGestureRecognizerDelegate添加到您的界面。

然后在viewDidLoad

UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapMethod)];
tapped.delegate=self;
tapped.numberOfTapsRequired = 3;
[self.view addGestureRecognizer:tapped];

然后在View Controller中:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{
    if (touch.view != cloudView&& cloudView) 
    {
        return YES;
    }
    return NO;
}

-(void)tapMethod 
{
    [cloudView removeFromSuperview];
    cloudView = nil;
}