How do I debounce text input in UIKit with Swift?

Debouncing is a programming practice used to ensure that a function is not called too frequently. It’s especially useful for managing text input in UI applications to improve performance and reduce unnecessary processing. Below is an example of how to debounce text input in a UIKit application using Swift.

import UIKit class ViewController: UIViewController { private var timer: Timer? private let debounceDelay: TimeInterval = 0.5 @IBOutlet weak var textField: UITextField! override func viewDidLoad() { super.viewDidLoad() textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) } @objc private func textFieldDidChange(_ textField: UITextField) { timer?.invalidate() // Cancel the previous timer timer = Timer.scheduledTimer(withTimeInterval: debounceDelay, repeats: false) { [weak self] _ in self?.performSearch(query: textField.text ?? "") } } private func performSearch(query: String) { // Perform search functionality here print("Searching for: \(query)") } }

Debouncing UIKit Swift Text Input Performance iOS Development