Идентифицированная проблема
В viewDidAppear:
мы выполняли следующее:
UISceneActivationConditions *conditions = self.view.window.windowScene.activationConditions;
conditions.prefersToActivateForTargetContentIdentifierPredicate = [NSPredicate predicateWithFormat:@"self == %@", self.note.noteID];
conditions.canActivateForTargetContentIdentifierPredicate = [NSPredicate predicateWithFormat:@"self == %@", self.note.noteID];
Когда отображалось контекстное меню, вызывался viewDidAppear:
и.activationConditions
были применены к текущей UIScene.
Обратите внимание, что контроллер предварительного просмотра в контекстном меню разделяет детали NSUserActivity с элементом drag + drop, и поэтому .targetContentIdentifier
NSUserActivity мы пытались перетащитьсоответствует предикату .activationConditions
текущей UIScene. Следовательно, при отображении контроллера представления предварительного просмотра в контекстном меню мы говорили системе, что текущий UIScene является оптимальным получателем события перетаскивания, не позволяя другим новым окнам получать его (по крайней мере, это мое предположение).
(Хотя я не согласен с таким поведением, похоже, что условия активации UIScene интерпретируются в этой iOS 13.1.3.)
Решение
Чтобы исправить это, я просто запретил настройку .activationConditions
при отображении контроллера представления в контекстном меню.
Вот обновленное видео , показывающее успешное перетаскивание + падение, даже сОтображаемое контекстное меню: