Monday, November 9, 2026
HomeiOS Developmentios - Show display screen saver when there's Inactivity in a viewcontroller

ios – Show display screen saver when there’s Inactivity in a viewcontroller

[ad_1]

My app requires to show a display screen saver after 2 min of inactivity in a viewcontroller. I’ve used timer with faucet gesturerecognizer to realize it.However generally faucet gesture isn’t working.

NSUInteger pg = 0;

-(void)viewDidLoad{
        timer= [NSTimer scheduledTimerWithTimeInterval:120 target:self selector:@selector(displayAlert) userInfo:nil repeats:YES];

        UITapGestureRecognizer *tap1 = [[UITapGestureRecognizer alloc]
                                        initWithTarget:self 
        motion:@selector(resetTimer:)];
        self.view.userInteractionEnabled = true;
        tap1.delegate=self;
        tap1.numberOfTapsRequired = 1;
        [self.view addGestureRecognizer:tap1];

} 
-(void)resetTimer:(UITapGestureRecognizer *)recognizer
{
    [timer invalidate];

}
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)contact
{
    [timer invalidate];
    timer = nil;
    [pageControl removeFromSuperview];
    [ScrollImages removeFromSuperview];
    timer= [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(displayAlert) userInfo:nil repeats:YES];
    return YES;
}
-(void)displayAlert
{ 
    //Show Screensaver photographs in a scrollview utilizing pagecontrol

   ScrollImages=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 5, 0, 0)];
    ScrollImages.showsVerticalScrollIndicator=NO;
    ScrollImages.showsHorizontalScrollIndicator=NO;
    
    ScrollImages.delegate = self;
    ScrollImages.scrollEnabled = YES;
    ScrollImages.backgroundColor=[UIColor clearColor];
    [self.view addSubview:ScrollImages];
    int xOffset = 0;
    if(xOffset>=0){
        
        ScrollImages.body=CGRectMake(0, 70, self.view.body.measurement.width, self.view.body.measurement.top);
        ScrollImages.scrollEnabled=true;
        [ScrollImages setPagingEnabled:true];
        
        
        for (int i=0; i< [arrScreenSaverImages count]; i++){
           UIImageView *img = [[UIImageView alloc] initWithFrame:CGRectMake(self.view.body.measurement.width*i,0,self.view.body.measurement.width, self.view.body.measurement.top)];
            NSURL *url = arrImages[i];
            NSLog(@"%@", url);
            
           NSString *urlString=[NSString stringWithFormat:@"%@",url];
            
            [img sd_setImageWithURL:[NSURL URLWithString:urlString] placeholderImage:nil  choices:SDWebImageRefreshCached];
            
          ScrollImages.contentSize = CGSizeMake(ScrollImages.body.measurement.width*[arrScreenSaverImages count],350);
            [ScrollImages addSubview:img];
            
            
        }
     
        pageControl = [[UIPageControl alloc] init];
        pageControl.body = CGRectMake(0, ScrollImages.body.origin.y+ScrollImages.body.measurement.height-50, self.view.body.measurement.width, 30);
       
        pageControl.numberOfPages = [arrImages count];
        pageControl.currentPage = 0;
       [pageControl addTarget:self action:@selector(changepage:) forControlEvents:UIControlEventValueChanged];
        pageControl.backgroundColor=[UIColor clearColor];
        
        if ([pageControl respondsToSelector:@selector(setPageIndicatorTintColor:)]){
            pageControl.pageIndicatorTintColor = [UIColor whiteColor];
            pageControl.currentPageIndicatorTintColor = [UIColor blackColor];
        }
        
        [self.view addSubview:pageControl];
    }
    
       CGRect body = ScrollImages.body;
       body.origin.x = body.measurement.width * pg;
       body.origin.y = 0;
       [ScrollImages scrollRectToVisible:frame animated:YES];
       pg++;
       if (pg == arrScreenSaverImages.depend+1){
           pg = 0;
           
       }

}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    int web page = ScrollImages.contentOffset.x / ScrollImages.body.measurement.width;
    pageControl.currentPage = web page;
}
-(IBAction)Ahead:(id)sender
{
    if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
    {
  if(ScrollImages.contentOffset.x+ScrollImages.body.measurement.width>ScrollImages.contentSize.width)
        {
            
        }
        else
        {
            CGPoint bottomOffset = CGPointMake(ScrollImages.contentOffset.x+ScrollImages.body.measurement.width,ScrollImages.contentOffset.y);
            [ScrollImages setContentOffset:bottomOffset animated:NO];
        }
    }
   
}
-(IBAction)backward:(id)sender
{
    if(ScrollImages.contentOffset.x==0)
    {
        
    }
    else
    {
        
        CGPoint bottomOffset = CGPointMake(ScrollImages.contentOffset.x-ScrollImages.body.measurement.width,ScrollImages.contentOffset.y);
        [ScrollImages setContentOffset:bottomOffset animated:NO];
        
    }
    
}

If we click on on view in 2-3 sec after the screensaver has appeared, display screen saver dismisses. But when we click on after someday like 10 sec, faucet gesture isn’t working and display screen saver does not dismiss. Could not perceive the place Am I going flawed?

[ad_2]

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments