如何检测 iOS 中特定视图控制器的空闲 time/inactivity 时间?
How to detect the idle time/inactivity time for a particular view controller in iOS?
由于我是移动应用程序开发和 Stack Overflow 的新手,我需要接受个人培训来检测应用程序特定视图控制器中的空闲时间。我正在 WKWebview 中加载网页 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 分钟后,您可以将用户重定向到任何您想要的地方。
由于我是移动应用程序开发和 Stack Overflow 的新手,我需要接受个人培训来检测应用程序特定视图控制器中的空闲时间。我正在 WKWebview 中加载网页 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 分钟后,您可以将用户重定向到任何您想要的地方。