Sobes.tech
Junior — Middle

Kuidas toimub mitme kuulaja töötlemine, mis on seotud ühe klikkimise sündmusega?

sobes.tech AI

Vastus AI-lt

iOS-is, kui ühe sündmuse, näiteks kliki (touchUpInside), on seotud mitme kuulajaga (target-action), kutsutakse need järjest lisamise järjekorras. Iga kuulaja saab sündmuse ja võib täita oma loogika.

Kui soovite kontrollida järjekorda või takistada edasist töötlemist, saate seda hallata sisemiselt, näiteks keelates teisi kuulajaid või kasutades lippe. Kuid UIKit-i standardmehhanism ei paku sisseehitatud viisi sündmuse leviku peatamiseks kuulajate vahel.

Näide, kuidas lisada mitu töötlejat UIButton-ile:

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

@objc func firstHandler() {
    print("Esimene töötleja")
}

@objc func secondHandler() {
    print("Teine töötleja")
}

Klõpsamisel kutsutakse mõlemad töötlejad järjest välja.