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.