수색…


최상위 UIViewController 가져 오기

최상위 UIViewController 를 얻는 일반적인 방법은 활성 UIWindow 의 RootViewController를 가져 오는 것입니다. 이 확장 프로그램을 작성했습니다 :

extension UIApplication {

func topViewController(_ base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController {
    
    if let nav = base as? UINavigationController {
        return topViewController(nav.visibleViewController)
    }
    
    if let tab = base as? UITabBarController {
        if let selected = tab.selectedViewController {
            return topViewController(selected)
        }
    }
    
    if let presented = base?.presentedViewController {
        return topViewController(presented)
    }
    
    return base!
}

인터셉트 시스템 이벤트

매우 강력 할 수있는 iOS NotificationCenter를 사용하면 특정 앱 전체 이벤트를 차단할 수 있습니다.

NotificationCenter.default.addObserver(
        self,
        selector: #selector(ViewController.do(_:)),
        name: NSNotification.Name.UIApplicationDidBecomeActive,
        object: nil)

더 많은 이벤트에 등록 할 수 있습니다. https://developer.apple.com/reference/foundation/nsnotification.name을 살펴보십시오.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow