I am trying to override viewDidAppear() methods of my custom ViewControllers and i found a solution using swizzle method. It works but when keyboard is visible, my method also gathers Keyboard UIViewControllers like;
    UIInputWindowController
    UICompatibilityInputViewController
    UISystemKeyboardDockController
    UIInputWindowController
    UICompatibilityInputViewController
    UICompatibilityInputViewController
    UISystemInputAssistantViewController
    UIPredictionViewController
    UISystemKeyboardDockController
I wonder how can i exclude all UIViewControllers other than my custom ViewControllers? I can exclude those UIViewControllers that i encounter so far but i think there will be UIViewControllers other than those in the future. I think i need a generic solution.
My code is as below:
extension UIViewController {
    @objc func viewDidApperOverride(_ animated: Bool) {
        self.viewDidApperOverride(animated)
        print(NSStringFromClass(type(of: self)))  
    }
    static func swizzle() {
        if self != UIViewController.self {
            return
        }
        
        let originalSelector = #selector(UIViewController.viewDidAppear(_:))
        let swizzledSelector = #selector(UIViewController.viewDidApperOverride(_:))
        guard let originalMethod = class_getInstanceMethod(self, originalSelector),
        let swizzledMethod = class_getInstanceMethod(self, swizzledSelector) else { return }
        method_exchangeImplementations(originalMethod, swizzledMethod)
    }
}