Le gestionnaire de addUIInterruptionMonitor n'est pas appelé pour Alert lié à Photos

private func acceptPermissionAlert() { _ = addUIInterruptionMonitor(withDescription: "") { alert -> Bool in if alert.buttons["Don't Allow"].exists { //doesnt get here second time alert.buttons.element(boundBy: 1).tapWhenExists() return true } return false } } 

et cela ne fonctionne pas pour:

entrez la description de l'image ici

Au début de l'application, il fonctionne parfaitement tout en acceptant l'autorisation pour les notifications, mais ici … ne fonctionne pas.

Est-ce que tu sais pourquoi?

Ajouter:

 app.tap() 

à la fin de la méthode.

C'est parce que vous devez interagir avec l'application pour le gestionnaire de tirer.

Après avoir ajouté le moniteur d'interruption, vous devez continuer à interagir avec l'application comme si elle n'était pas apparue.

Notez également que vous avez une «citation intelligente» dans votre identifiant de button, au lieu d'une apostrophe régulière.

 let photosAlertHandler = addUIInterruptionMonitor(withDescription: "Photo Permissions") { alert -> Bool in if alert.buttons["Don't Allow"].exists { alert.buttons.element(boundBy: 1).tapWhenExists() return true } return false } // Do whatever you want to do after dismissing the alert let someButton = app.buttons["someButton"] someButton.tap() // The interruption monitor's handler will be invoked if the alert is present 

Lorsque l'interaction suivante se produit après l'apparition de l'alerte, le gestionnaire du moniteur d'interruption est appelé et l'alerte est gérée.

Vous devez également supprimer le moniteur d'interruption lorsque vous pensez en avoir terminé, sinon il sera appelé pour toutes les autres alertes qui apparaissent.

 removeUIInterruptionMonitor(photosAlertHandler)