Ինչպե՞ս կարելի է բացառել UIButton-ը Responder Chain-ի պատասխանների շղթայից։
sobes.tech AI
Պատասխան AI-ից
iOS-ում UIButton- ը դուրս բերելու համար պատասխանների շղթայից (Responder Chain), դուք կարող եք վերագրել canBecomeFirstResponder մեթոդը և վերադարձնել false, ինչպես նաև վերագրել իրադարձությունների մշակման մեթոդները, որպեսզի կոճակը չանցնի իրադարձությունները։
Այնուամենայնիվ, ավելի ուղիղ միջոց է վերագրել hitTest(_:with:) մեթոդը superclass-ում կամ հենց UIButton-ում և վերադարձնել nil, եթե ցանկանում եք, որ կոճակը չընդունի հպման իրադարձություններ, այդպիսով դուրս գալով պատասխանների շղթայից։
Օրինակ՝ վերագրում UIButton-ի ենթակլասում՝
class NonResponderButton: UIButton {
override var canBecomeFirstResponder: Bool {
return false
}
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
// Վերադարձնում ենք nil, որպեսզի կոճակը չմշակի հպումները
return nil
}
}
Այսպիսով, կոճակը չի ստանա իրադարձություններ և չի մտնի պատասխանների շղթա։ Եթե ցանկանում եք, որ կոճակը լինի տեսանելի, բայց չպատասխաներ հպումներին, կարող եք նաև սահմանել isUserInteractionEnabled = false, ինչը ավտոմատ կերպով դուրս կբերի այն պատասխանների շղթայից։