I notice this question was asked 4 years ago with no responses. This issue is not specific to custom presentation and has actually existed for a long time, but was elevated by the iOS 13 updates to .formSheet presentation.
Simple scenario - ViewController 'A' presents ViewController 'B' modally. If the presentation style is 'full screen' then VC 'A' will receive a 'viewDidDisappear' message. However, if you change the presentation style to one that partially occludes 'A' then 'A' no longer gets the appear/disappear lifecycle methods.
This makes sense on paper. However, we have code that assumes that these lifecycle methods would be called when a modal is presented over them - they don't understand the nuance between being fully and partially occluded based on the presentation style. We noticed this issue when iOS 13 changed the default behavior of the 'automatic' option to go from full screen to partially occluded (i.e., .formSheet style).
The question - How does a View Controller know when it effectively 'disappears' when a modal is presented "over" it?