Skip to content

Instantly share code, notes, and snippets.

@KaQuMiQ
Created March 17, 2020 07:50
Show Gist options
  • Select an option

  • Save KaQuMiQ/305e2f5be32703f61f567eec17846100 to your computer and use it in GitHub Desktop.

Select an option

Save KaQuMiQ/305e2f5be32703f61f567eec17846100 to your computer and use it in GitHub Desktop.
Getting current first responder
import UIKit
extension UIResponder {
private static weak var _currentFirstResponder: UIResponder?
public static var currentFirstResponder: UIResponder? {
dispatchPrecondition(condition: .onQueue(.main))
_currentFirstResponder = nil
UIApplication.shared.sendAction(#selector(UIResponder.findFirstResponder(_:)), to: nil, from: nil, for: nil)
return _currentFirstResponder
}
@objc private func findFirstResponder(_ sender: Any) {
UIResponder._currentFirstResponder = self
}
public static var firstResponderExists: Bool {
dispatchPrecondition(condition: .onQueue(.main))
return currentFirstResponder != nil
}
public static func resignCurrentFirstResponder() {
dispatchPrecondition(condition: .onQueue(.main))
currentFirstResponder?.resignFirstResponder()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment