iOS MKMapItem 的 openInMaps(launchOptions:) 不会触发 viewWillDisappear
iOS MKMapItem's openInMaps(launchOptions:) does not trigger viewWillDisappear
我正在通过 openInMaps(launchOptions:) 从我的 ViewController 打开 Maps.app,它在离开或返回应用程序时不会触发任何生命周期方法。
示例项目:
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)
谁能给我解释一下为什么会这样?
这是因为您的应用没有更改其可见视图控制器。所以不会触发视图控制器生命周期事件。
但是,应用程序生命周期事件被触发。可以通过在默认通知中心注册来观察它们。所有可用的事件都可以在 UIApplication 的文档中找到。
您可以通过以下代码注册观察者:
NotificationCenter.default.addObserver(self,
selector: #selector(self.applicationDidResignActive),
name: Notification.Name.UIApplicationWillResignActive,
object: nil)
同时添加方法:
func applicationDidResignActive(notification: NSNotification) {
// handle event
}
我正在通过 openInMaps(launchOptions:) 从我的 ViewController 打开 Maps.app,它在离开或返回应用程序时不会触发任何生命周期方法。
示例项目: 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)
谁能给我解释一下为什么会这样?
这是因为您的应用没有更改其可见视图控制器。所以不会触发视图控制器生命周期事件。
但是,应用程序生命周期事件被触发。可以通过在默认通知中心注册来观察它们。所有可用的事件都可以在 UIApplication 的文档中找到。
您可以通过以下代码注册观察者:
NotificationCenter.default.addObserver(self,
selector: #selector(self.applicationDidResignActive),
name: Notification.Name.UIApplicationWillResignActive,
object: nil)
同时添加方法:
func applicationDidResignActive(notification: NSNotification) {
// handle event
}