Middle
Kako izuzeti UIButton iz lanca odgovora Responder Chain?
sobes.tech АИ
Одговор од АИ
Da biste isključili UIButton iz lanca odgovora (Responder Chain) u iOS, možete prepisati metodu canBecomeFirstResponder i vratiti false, kao i prepisati metode obrade događaja tako da dugme ne prosleđuje događaje dalje.
Međutim, direktniji način je da prepišete metodu hitTest(_:with:) u superklasi ili u samom UIButton i vratite nil, ako želite da dugme ne prihvata događaje dodira, čime ga isključujete iz lanca odgovora.
Primer prepisivanja u podklasi UIButton:
class NonResponderButton: UIButton {
override var canBecomeFirstResponder: Bool {
return false
}
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
// Vraćamo nil da bi dugme ignorisalo dodire
return nil
}
}
Na ovaj način, dugme neće primati događaje i neće biti uključeno u lanac odgovora. Ako želite da dugme bude vidljivo, ali ne reaguje na dodire, možete takođe postaviti isUserInteractionEnabled = false, što će ga automatski isključiti iz lanca odgovora.