[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]
