Sobes.tech
Middle

UIButton-i Responder Chain cavab zəncirindən necə çıxarmaq olar?

sobes.tech Süni İntellekt

AI-dan cavab

iOS-da UIButton-u Cavablar Zəncirindən (Responder Chain) çıxarmaq üçün canBecomeFirstResponder metodunu yenidən yaza və false qaytara bilərsiniz, həmçinin hadisə emal metodlarını yenidən yaza bilərsiniz ki, düymə hadisələri irəli ötürməsin.

Ancaq daha birbaşa yol hitTest(_:with:) metodunu superklassda və ya birbaşa UIButton-da yenidən yaza və nil qaytarmağa imkan verir, əgər düymənin toxunma hadisələrini qəbul etməsini istəmirsinizsə, onu cavablar zəncirindən çıxarır.

UIButton alt sinifində yenidən yazma nümunəsi:

class NonResponderButton: UIButton {
    override var canBecomeFirstResponder: Bool {
        return false
    }

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        // Toxunma hadisələrini işləməməsi üçün nil qaytarır
        return nil
    }
}

Beləliklə, düymə hadisələri almır və cavablar zəncirinə daxil olmur. Əgər düymənin görünməsini istəyirsiniz, lakin toxunmalara cavab verməsini istəmirsinizsə, isUserInteractionEnabled = false də qura bilərsiniz, bu onu avtomatik olaraq cavablar zəncirindən çıxarır.