问题
I need to perform a particular action in a view controller when user don't touch a particular screen for 3 seconds.
How can I do that in iOS?
回答1:
Override the view's touches began method and reset a timer when you get touches.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.timer invalidate];
self.timer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(inactivityTimerFired) userInfo:nil repeats:NO];
[super touchesBegan:touches withEvent:event];
}
You could target the view controller instead of self
if you need to.
回答2:
- Add an
NSTimer
property/ivar to your view controller - Add a tap gesture recognizer to the view you want to monitor (or use
touchesBegan:
) - When the tap recognizer is hit, start the timer with an interval of
3.0
s to call a function - If tap recognizer is hit before the function the timer calls, invalidate the timer and set it to
nil
- If the function that the timer was calling is hit, the user has been inactive for 3 seconds
来源:https://stackoverflow.com/questions/26001574/how-to-detect-user-inactivity-since-last-touch-on-a-particular-viewcontroller-in