Middle
Ekranga bosganimizda tizimda nima bo'ladi?
sobes.tech AI
AIdan javob
Foydalanuvchi iOS qurilmasining ekraniga teganda, quyidagilar bo'ladi:
- Voqeani yozib olish: Qurilma (touch controller) tegishni ro'yxatga oladi va voqea yaratadi.
- IOKitda voqeani qayta ishlash: Qurilma drayveri IOKitda tegish ma'lumotlarini (koordinatalar, bosim kuchi va boshqalar) oladi.
- Voqeani SpringBoardga yuborish: IOKit voqeani tizim jarayoniga (SpringBoard) uzatadi.
- Voqeani yo'naltirish: SpringBoard faol bo'lgan ilovani aniqlaydi va IPC (Inter-Process Communication) orqali unga voqeani yuboradi.
- UIKit/SwiftUIda voqeani qabul qilish: Ilova framework (UIKit yoki SwiftUI) orqali voqeani oladi.
- Voqeani navbatga qo'shish: Voqea ilovaning voqealarni qayta ishlash navbatiga qo'shiladi.
- Ilova tomonidan voqeani qabul qilish: Ilovaning asosiy sikli (Run Loop) voqeani navbatdan oladi.
- Voqeani UIResponder orqali qayta ishlash: Voqea
UIEventob'ektiga uzatiladi. UIKit odatdaUIWindowdan boshlanadigan voqeani yetkazish jarayonini boshlaydi. - hitTest tekshiruvi: Tizim tegish nuqtasining ostidagi eng yuqori va interaktiv
UIViewni aniqlaydi,hitTest(_:with:)metodidan foydalanib. Bu metod rekursiv tarzda ko'rinishlar hierarxiyasini o'tib, nuqtaning chegaralar ichida ekanligini va ko'rinishuserInteractionEnabledholatda ekanligini tekshiradi. - Voqeani yetkazish: Voqea topilgan ko'rinishga yetkaziladi. Agar ko'rinish voqeani ishlamasa (masalan, mos gest yoki
touchesBegan:withEvent:ni amalga oshirmagan yokihitTestda nil qaytarsa), voqea navbatdagi responderga (odatda, superview yoki view controller) o'tkaziladi. - Gestlar yoki tegish metodlarini ishlash: Agar ko'rinishda
UIGestureRecognizertanib oluvchilar bo'lsa, ular avval voqeani oladi. Agar gest tan olinsa, u Objective-C yoki Swift funksiyasi orqali ishlanadi. Agar gestlar voqeani ishlamasa yoki mavjud bo'lmasa, voqea ko'rinishning tegish metodlariga o'tkaziladi (touchesBegan(_:with:),touchesMoved(_:with:),touchesEnded(_:with:),touchesCancelled(_:with:)). - Mantiqni bajarish: Gest yoki tegish metodida, foydalanuvchi tomonidan belgilangan mantiq bajariladi (masalan, UI holatini o'zgartirish, navigatsiya qilish, harakatni bajarish).
- UIni yangilash: Agar mantiq UIda o'zgarishlarga olib kelsa, framework qayta chizish so'rovini yuboradi (zarur bo'lsa).
Mana tugma ustiga tegishni boshqarish uchun juda soddalashtirilgan mantiq misoli:
// ViewController yoki boshqa UIResponder ichida
@IBAction func buttonTapped(_ sender: Any) {
// Tugma bosilganda bajariladigan mantiq
print("Tugma bosildi!")
}
touchesBegandan foydalanish misoli (oddiy tegishlar uchun kamroq tarqalgan):
// UIView dan meros olgan maxsus ko'rinishda
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
// Birinchi tegishni olish
guard let touch = touches.first else { return }
// Tegish nuqtasini ko'rinish koordinatalarida olish
let location = touch.location(in: self)
print("Ekran CGPoint: \(location) da tegildi")
// Super chaqirilmasa, keyingi responder zanjiri to'xtatiladi
// super.touchesBegan(touches, with: event)
}