Detect user inactivity is important to many apps. Maybe you want to hide something or have the user interface do something after a certain amount of time.
Here’s how I recommend you detect user inactivity in Swift.
First make a timer property:
var timer: Timer?Now we’ll create a restartTimer function that we’ll call every time we want to restart the clock:
func resetTimer() {
timer?.invalidate()
timer = Timer.scheduledTimer(timeInterval: 10.0, target: self, selector: #selector(hideControls), userInfo: nil, repeats: false)
}This timer calls a hideControls function after 10 seconds. Let’s create the hideControls function:
@objc func hideControls() {
// Hide controls here
}Now call this resetTimer() in viewDidAppear:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
setupVideoPlayer()
resetTimer()
}Now hideControls will called after 10 seconds. But wait! How do we get them back? When the user taps the screen, the controls should re-appear.
To do this we’ll add a gesture recognizer to our whole screen in our viewDidAppear.
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(toggleControls))
view.addGestureRecognizer(tapGesture)Now we need to create a toggleControls function:
@objc func toggleControls() {
// toggle controls here
resetTimer()
}Now your controls will hide and show every time you tap the screen. The controls will also fade away after 10 seconds of user inactivity.
You can adjust the time interval to your needs.

The Complete iOS App Development Bootcamp
Disclosure: This website may contain affiliate links, meaning when you click the links and make a purchase, we receive a commission.