如何检测 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 分钟后,您可以将用户重定向到任何您想要的地方。