Sobes.tech
Middle

Kaip galima išskirti UIButton iš Responder Chain atsakymų grandinės?

sobes.tech AI

Atsakymas iš AI

Norint išskirti „UIButton“ iš atsakovo grandinės („Responder Chain“) iOS, galite perrašyti metodą canBecomeFirstResponder ir grąžinti false, taip pat perrašyti įvykių apdorojimo metodus, kad mygtukas neperduotų įvykių toliau.

Tačiau tiesesnis būdas yra perrašyti metodą hitTest(_:with:) superklase arba pačiame UIButton ir grąžinti nil, jei norite, kad mygtukas nepriimtų lietimo įvykių, taip jį išskiriant iš atsakovo grandinės.

Pavyzdys, kaip perrašyti UIButton pogrupyje:

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

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        // Grąžiname nil, kad mygtukas neapdorotų lietimų
        return nil
    }
}

Tokiu būdu mygtukas negaus įvykių ir nepateks į atsakovo grandinę. Jei norite, kad mygtukas būtų matomas, bet neatsakytų į lietimus, galite taip pat nustatyti isUserInteractionEnabled = false, kas automatiškai jį išskirs iš atsakovo grandinės.