Sobes.tech
Middle

Kuidas eemaldada UIButton Responder Chain'i vastuste ahelast?

sobes.tech AI

Vastus AI-lt

Et vältida UIButton-i vastajate ahelast (Responder Chain) iOS-is, saate üle kirjutada meetodi canBecomeFirstResponder ja tagastada false, samuti üle kirjutada sündmuste töötlemise meetodid, et nupp ei edastaks sündmusi edasi.

Kuid otsekohesem viis on üle kirjutada meetod hitTest(_:with:) superklassis või otse UIButton-is ja tagastada nil, kui soovite, et nupp ei aktsepteeri puutetõrkeid, eemaldades selle sellega vastajate ahelast.

Näide ülekirjutamisest UIButton-i alamklassis:

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

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        // Tagastame nil, et nupp ei töötle puudutusi
        return nil
    }
}

Sellisel viisil ei saa nupp sündmusi ja ei kuulu vastajate ahelasse. Kui soovite, et nupp oleks nähtav, kuid ei reageeriks puudutustele, saate samuti määrata isUserInteractionEnabled = false, mis automaatselt eemaldab selle vastajate ahelast.