Middle
iOS-də cavablandırıcı zənciri (responder chain) necə qurulub?
sobes.tech Süni İntellekt
AI-dan cavab
Cavab zənciri, iOS-də hadisələri (dokunma, jestlər, klaviatura basmaları, mətn redaktə hadisələri) işləyən UIResponder obyektlərinin ardıcıllığıdır.
Hadisə baş verdikdə, sistem onu "birinci cavablandırıcı"ya (məsələn, toxunma zamanı UIView) göndərir. Əgər ilk cavablandırıcı hadisəni işləyə bilməzsə, onu zəncir boyunca növbəti məsul obyektə keçirir.
Tipik cavablandırıcı zənciri:
- Ən dərin yerləşmiş
UIView. - Onun
superview-si. - Daha sonra, hierarxiyada,
superview-dən kök görünümdən (root view) qədər. - Bu görünümü idarə edən
UIViewController. UIWindow.UIApplication.AppDelegate.
İşləmə prosesi:
- Sistem toxunma nöqtəsinin altındakı
UIView-ni axtarır. BuUIViewilk cavablandırıcı olur. - İlk cavablandırıcı öz metodunu çağırır hadisəni işləmək üçün (məsələn,
touchesBegan(_:with:)). - Əgər metod hadisəni işləməzsə (və ya açıq şəkildə superklass metodunu çağırırsa), hadisə zəncir boyunca növbəti cavablandırıcıya ötürülür (
next). - Zəncir davam edir, hadisə işlənənə və ya sona çatana qədər (adətən
UIApplicationvə yaAppDelegate, onları adətən görməzdən gəlirlər).
Zəncirdə ötürmə nümunəsi:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
// Xüsusi toxunma işləmə məntiqi
if !handledByThisView {
// Əgər bu görünüş hadisəni işləməyibsə, davam et
super.touchesBegan(touches, with: event)
}
}
Əsas nöqtələr:
- Hadisələri işləyə bilən obyektlər
UIResponder-dən irsən gəlir. - Hər
UIResponder-innextxüsusiyyəti zəncirdəki növbəti obyekti qaytarır. - Əgər
UIResponder-də hadisə işləmə metodu tətbiq edilməyibsə və ya superklass metodunu çağırırsa, hadisə standart olaraq növbəti obyektə ötürülür. UIResponderhəmçinin fokusun idarə olunmasında və redaktə komandalarında rol oynayır.