2017-04-26 53 views
1

我從我的ViewController的Maps.app通過openInMaps(launchOptions打開:),它不會觸發任何生命週期方法離開或回到應用程序時。的iOS MKMapItem的openInMaps(launchOptions :)不會觸發viewWillDisappear

示例項目: https://github.com/raphaelseher/OpenInMaps

示例代碼:

let placeMark = MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: 46.6413035, longitude: 14.2425444)) 
let mapItem = MKMapItem(placemark: placeMark) 
mapItem.name = "Klagenfurt" 
mapItem.openInMaps(launchOptions: nil) 

有人能解釋我爲什麼是這樣的行爲?

回答

1

這是因爲你的應用程序不改變其可見視圖控制器。所以視圖控制器生命週期事件不會被觸發。

然而,應用程序生命週期事件被觸發。可以通過向默認通知中心註冊來觀察。所有可用的事件可以UIApplication的文檔中找到。

你可以註冊用下面的代碼觀察員:

NotificationCenter.default.addObserver(self, 
             selector: #selector(self.applicationDidResignActive), 
             name: Notification.Name.UIApplicationWillResignActive, 
             object: nil) 

,並添加方法:

func applicationDidResignActive(notification: NSNotification) {  
    // handle event 
}