Sobes.tech
Middle

Kā izslēgt UIButton no Responder Chain atbilžu ķēdes?

sobes.tech AI

Atbilde no AI

Lai izslēgtu UIButton no Atbildētāja ķēdes (Responder Chain) iOS, jūs varat pārrakstīt metodi canBecomeFirstResponder un atgriezt false, kā arī pārrakstīt notikumu apstrādes metodes, lai pogas neizplatītu notikumus tālāk.

Tomēr tiešāks veids ir pārrakstīt metodi hitTest(_:with:) superklasē vai pašā UIButton un atgriezt nil, ja vēlaties, lai poga nepieņem pieskāriena notikumus, tādējādi izslēdzot to no atbildētāja ķēdes.

Piemērs, pārrakstot UIButton apakšklasē:

class NonResponderButton: UIButton {
    override var canBecomeFirstResponder: Bool {
        return false
    }

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        // Atgriežam nil, lai poga neapstrādātu pieskārienus
        return nil
    }
}

Tādējādi poga nesaņems notikumus un neiekļausies atbildētāja ķēdē. Ja vēlaties, lai poga būtu redzama, bet nereaģētu uz pieskārieniem, varat arī iestatīt isUserInteractionEnabled = false, kas to automātiski izslēgs no atbildētāja ķēdes.