工作生活

iOS添加静置一段时间后唤起全屏轮播功能

2019-07-03  本文已影响0人  ldhonline

一、背景

在开发一款美容业iPad应用期间,对方提出了一个类似电脑屏保的功能,把iPad静置一段时间后,自动唤起一个全屏图片轮播。

二、功能实现方案

如果算静置呢,我想可以定义为用户不触摸屏幕一段时间,就算用户没有操作行为,那只要监听用户的触摸行为就可以了。

按触摸响应链模式,设备总是从window开始检测是否有效触摸,使用hitTest进行不断的向下传播,那我们只要重载window的hitTes方法,在里面添加一个时间检测行为就可以了。

三、具体代码

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface MMYWindow : UIWindow

@end

NS_ASSUME_NONNULL_END
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    [self updateOperationInterval];
    return [super hitTest:point withEvent:event];
}
- (void)updateOperationInterval
{
    [NSObject cancelPreviousPerformRequestsWithTarget:self];
    // 5分钟后进入屏保
    [self performSelector:@selector(enterScreenSaverMode) withObject:nil afterDelay:60*5];
}

- (void)enterScreenSaverMode
{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"enterScreenSaverMode" object:nil];
}
    self.window = [[MMYWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor whiteColor];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showCycleSlide) name:@"enterScreenSaverMode" object:nil];
上一篇 下一篇

猜你喜欢

热点阅读