Sobes.tech
Junior — Middle

Jak obsługiwane jest przetwarzanie wielu słuchaczy powiązanych z jednym zdarzeniem kliknięcia?

sobes.tech AI

Odpowiedź od AI

W iOS, jeśli do zdarzenia, na przykład kliknięcia (touchUpInside), przypisanych jest kilka słuchaczy (target-action), są one wywoływane w kolejności dodania. Każdy słuchacz otrzymuje zdarzenie i może wykonać swoją logikę.

Jeśli chcesz kontrolować kolejność lub zapobiec dalszemu przetwarzaniu, możesz to zrobić wewnątrz obsługi, na przykład wyłączając innych słuchaczy lub używając flag. Jednak standardowy mechanizm UIKit nie zapewnia wbudowanego sposobu zatrzymania rozprzestrzeniania się zdarzenia między słuchaczami.

Przykład dodania kilku obsługiwaczy do UIButton:

button.addTarget(self, action: #selector(firstHandler), for: .touchUpInside)
button.addTarget(self, action: #selector(secondHandler), for: .touchUpInside)

@objc func firstHandler() {
    print("Pierwszy obsługiwacz")
}

@objc func secondHandler() {
    print("Drugi obsługiwacz")
}

Po kliknięciu oba obsługiwacze zostaną wywołane kolejno.