3 votes

comment détecter la perte de la mise au point de l'UIview ou sa récupération dans swift 4 ?

Je suis en train de développer une page en vue défilante, où il y a des vidéos Youtube avec le framework YoutubeKit.

YoutubeKit utilise UIView pour afficher la vidéo. J'aimerais mettre la vidéo en pause lorsque l'UIView n'est pas au centre de l'attention (pas montré mais utilisateur).

isfocused() fonctionne mais j'aimerais obtenir "un événement", pour réagir automatiquement lorsque le focus est perdu.

J'ai compris que je devais créer une classe UIview personnalisée pour remplacer canBecomeFocused.

voici le code de la classe personnalisée que j'ai créée

import Foundation
import UIKit

class focusableUIview: UIView {
    override var canBecomeFocused: Bool {
        return true
    }
    override func didUpdateFocus(in context: UIFocusUpdateContext, withcoordinator: UIFocusAnimationCoordinator) {

    print("focus")
}
}

J'ai également mis à jour le story board en changeant la classe de l'UIView que je veux détecter le changement de focus.

Ce que je me demande, ce que je dois faire dans la classe UIviewcontroller, j'ai remarqué que canBecomeFocused n'est jamais appelé...

Je suis un peu perdu. Merci beaucoup pour votre aide.

0voto

Erumaru Points 147

Faites en sorte que votre vue soit focalisée

override var canBecomeFocused: Bool {
    return true
}

Ensuite, remplacez cette fonction pour obtenir la mise à jour du focus.

override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X