Sakthimuthiah
Sakthimuthiah

Reputation: 2636

How to recognize a touch event on UIImageView while animating in ios using objective c code?

Hi i am animating 4 images in UIImageView by the following code. But the problem is image is not appearing in UIImageView. If i try removal of swipeImage code then image is appearing in UIImageView. How to make imageview appear in UIImageView ?

Oulet had made to UIImageView property, if i try to set image without animation code, UIImageView has image. Withanimation, UIImageView has no appearance of image. Thanks in advance for any help.

Property

@property (weak , nonatomic )IBOutlet UIImageView *imgslide;

Declaration

    int scrlNo;
NSTimer *aTimer;

View did load code

  scrlNo = 0;

    imgslide.userInteractionEnabled = YES;
    [self addGestures];
    [self SwipeImages];

Add gesture code

-(void)addGestures //Adding Single Tap Gesture here
{
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageViewTap:)]; //init the TapGesture with the selector
    singleTap.cancelsTouchesInView = YES;
    [imgslide addGestureRecognizer:singleTap]; //Add it to imgslide, not to self.view

}

ImageViewTap code

-(void)imageViewTap :(UITapGestureRecognizer *) gesture
{
    NSLog(@"Clicked image %d", scrlNo);
}

Swipe Images Code or animation code

- (void)SwipeImages
{
    if (scrlNo==1) {

        imgslide.image = [UIImage imageNamed:@"promo_banner_2.png"];


        scrlNo=2;
        [aTimer invalidate];

        aTimer = nil;
        aTimer=[NSTimer scheduledTimerWithTimeInterval:15
                                                target:self
                                              selector:@selector(SwipeImages)
                                              userInfo:nil
                                               repeats:YES];

    }else if (scrlNo==0) {



//        UIImage * img = [UIImage imageNamed:@"promo_banner_1.png"];
//        
//        [self.imageViewOutlet setImage:img];

        imgslide.image = [UIImage imageNamed:@"promo_banner_1.png"];


        scrlNo=1;
        [aTimer invalidate];

        aTimer = nil;
        aTimer=[NSTimer scheduledTimerWithTimeInterval:15
                                                target:self
                                              selector:@selector(SwipeImages)
                                              userInfo:nil
                                               repeats:YES];

    }
    else if (scrlNo==2) {

//        UIImage * img = [UIImage imageNamed:@"promo_banner_3.png"];
//        
//        [self.imageViewOutlet setImage:img];

        imgslide.image = [UIImage imageNamed:@"promo_banner_3.png"];


        scrlNo=3;
        [aTimer invalidate];

        aTimer = nil;
        aTimer=[NSTimer scheduledTimerWithTimeInterval:15
                                                target:self
                                              selector:@selector(SwipeImages)
                                              userInfo:nil
                                               repeats:YES];

    }
    else if (scrlNo==3) {


//        
//        UIImage * img = [UIImage imageNamed:@"promo_banner_7.png"];
//        
//        [self.imageViewOutlet setImage:img];

        imgslide.image = [UIImage imageNamed:@"promo_banner_7.png"];


        scrlNo=0;
        [aTimer invalidate];

        aTimer = nil;
        aTimer=[NSTimer scheduledTimerWithTimeInterval:15
                                                target:self
                                              selector:@selector(SwipeImages)
                                              userInfo:nil
                                               repeats:YES];
    }
    else if (scrlNo==4) {

    }
}

Upvotes: 1

Views: 332

Answers (1)

DilumN
DilumN

Reputation: 2897

Add this method & load this method on viewDidLoad instead of loading SwipeImages on viewDidLoad

-(void)addTimer
{
    aTimer=[NSTimer scheduledTimerWithTimeInterval:15
                                            target:self
                                          selector:@selector(SwipeImages)
                                          userInfo:nil
                                           repeats:YES];
}

Then your viewDidLoad looks like

scrlNo = 0;

    imgslide.userInteractionEnabled = YES;
    [self addGestures];
    [self addTimer];

And Edit SwipeImages to this,

- (void)SwipeImages
{
    if (scrlNo==1) {
        imgslide.image = [UIImage imageNamed:@"promo_banner_2.png"];
        scrlNo=2;

    }else if (scrlNo==0) {
        imgslide.image = [UIImage imageNamed:@"promo_banner_1.png"];
        scrlNo=1;
    }
    else if (scrlNo==2) {
        imgslide.image = [UIImage imageNamed:@"promo_banner_3.png"];
        scrlNo=3;
    }
    else if (scrlNo==3) {
        imgslide.image = [UIImage imageNamed:@"promo_banner_7.png"];
        scrlNo=0;
    }
    else if (scrlNo==4) {

    }
}

Upvotes: 1

Related Questions