ios - 如何检测 iOS 中特定视图控制器的空闲时间/非活动时间?
问题描述
由于我对移动应用程序开发和堆栈溢出非常陌生,因此我需要进行个人培训以检测应用程序特定视图控制器中的空闲时间。我正在 WKWebview 中加载 Web URL。因此,如果用户在此屏幕上花费大约 3 分钟的空闲时间,我的应用程序应该注销并进入主屏幕。经历了几个 SO 问题,但所有这些问题都为整个应用程序实现了一个共同的空闲时间,但就我而言,我只想要这个特定的视图控制器。这是我在 WKWebview 中显示 Web URL 的视图控制器代码:
#import "WebViewController.h"
#import <WebKit/WebKit.h>
@interface WebViewController ()<WKNavigationDelegate,WKUIDelegate>{
WKWebView *_wkViewer;
}
@end
@implementation WebViewController
- (void)viewDidLoad {
[super viewDidLoad];
_wkViewer = [[WKWebView alloc] initWithFrame:CGRectMake(0,[UIApplication sharedApplication].statusBarFrame.size.height + 50, self.view.frame.size.width, self.view.frame.size.height -([UIApplication sharedApplication].statusBarFrame.size.height+70))];
[_wkViewer setAutoresizingMask: UIViewAutoresizingFlexibleWidth];
NSURL *url = [NSURL URLWithString: self.productURL];
NSURLRequest *urlReq = [NSURLRequest requestWithURL:url
[_wkViewer loadRequest:urlReq];
[self.view addSubview:_wkViewer];
}
-(void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
UINavigationBar *navBar = [[UINavigationBar alloc]initWithFrame:CGRectMake(0, [UIApplication sharedApplication].statusBarFrame.size.height, self.view.frame.size.width, 50)];
[[UINavigationBar appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], NSForegroundColorAttributeName,
[UIFont fontWithName:@"Arial" size:20.0], NSFontAttributeName,nil]];
[navBar setAutoresizingMask: UIViewAutoresizingFlexibleWidth];
[UINavigationBar appearance].barTintColor = [UIColor whiteColor];
[self.view addSubview: navBar];
UIBarButtonItem *cancelItem = [[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(backClicked)]
UINavigationItem *navigItem = [[UINavigationItem alloc] initWithTitle:_titleName];
navigItem.leftBarButtonItem = cancelItem;
navBar.items = [NSArray arrayWithObjects: navigItem,nil];
[UIBarButtonItem appearance].tintColor = [UIColor whiteColor];
}
- (void)backClicked {
[self dismissViewControllerAnimated:YES completion:nil];
}
@end
解决方案
您可以使用 NSTimer 并在该特定视图控制器上注册 TapGesture,当 NSTimer 方法调用 3 分钟后,您可以将用户重定向到您想要的任何地方。
推荐阅读
- react-native - React Native 开关 - 在数据库中将值保存为“是”/“否”而不是“真”/“假”
- azure - 如何在 Azure 容器实例中编辑 /etc/hosts?
- pm2 - pm2 - 文件保存时重新启动(pm2 日志)
- http - HTTP 1.1 是否允许在请求仍然流式传输块时发送响应?
- amazon-web-services - AWS CodeBuild Docker 镜像作为基础镜像
- cordova - 冲突 cordova-plugin-googleplus 和 phonegap-plugin-push
- reactjs - 无法读取未定义的属性“XYZ” – 绑定问题
- node.js - Firebase Admin SDK - 错误:“提供给 initializeApp() 的凭据实现”
- r - 使用 ggplot 的 R 条形图
- selenium-webdriver - 是否可以将 selenium 与任何 AI 工具集成,使其能够拥有更好的或 AI(人工智能)方法来定位元素