Sobes.tech
Middle+

İstifadəçi girişinin deaktiv olduğu (istifadəçi qarşılıqlı əlaqəsi false) və Vue-nun toxunma hadisələrini işləyə bilmədiyi vəziyyətlər hansılardır?

sobes.tech Süni İntellekt

AI-dan cavab

iOS-də UIView səviyyəsində user interaction enabled false vəziyyəti, bu UIView və onun alt görünüşlərinin toxunma hadisələrini qəbul edə bilməyəcəyi deməkdir.

Bunun baş verə biləcəyi və Vue komponentlərinin işlənməsinə təsir edə biləcək vəziyyətlər, məsələn, WKWebView vasitəsilə yerləşdirilmiş:

  • Şəffaf görünüşün üst-üstə düşməsi: Əgər WKWebView üzərinə başqa bir görünüş isUserInteractionEnabled = true ilə yerləşdirilib və bu, tam və ya qismən WKWebView sahəsini örtürsə, toxunma hadisələri yuxarı görünüş tərəfindən tutulacaq və WKWebView içindəki Vue komponentləri onları ala bilməyəcək.
  • WKWebView üçün qarşılıqlı əlaqənin deaktiv edilməsi: WKWebView-in özünün isUserInteractionEnabled xüsusiyyəti false-a təyin olunubsa, veb görünüşündəki toxunma idarəsi tamamilə deaktiv olur.
  • WKWebView-in valideyn görünüşü üçün qarşılıqlı əlaqənin deaktiv edilməsi: Əgər WKWebView bir UIView-in uşağıdırsa və bu UIView isUserInteractionEnabled = false-a təyin olunubsa, onun bütün uşaqları, o cümlədən WKWebView, toxunma hadisələrini qəbul etməyəcək.
  • Modal görünüşlər və ya xəbərdarlıq idarəediciləri: UIViewController.present vasitəsilə göstərilən modal görünüş və ya sistem xəbərdarlıq idarəedicisi, WKWebView-i ehtiva edən əsas görünüş üzərində bütün toxunma hadisələrini ələ keçirir və modal görünüş və ya xəbərdarlıq bağlanana qədər onları qəbul edir.
  • Animasiyalar: Bəzi animasiyalar zamanı, istifadəçinin istəmədiyi hərəkətlərin qarşısını almaq üçün, görünüşlə qarşılıqlı əlaqə müvəqqəti olaraq deaktiv edilə bilər.
  • Uzunmüddətli fon əməliyyatları: Köhnə memarlıqda və ya yanlış tətbiqdə, uzunmüddətli fon tapşırıqları (məsələn, məlumat yükləmə) zamanı, istifadəçi hərəkətlərinin qarşısını almaq üçün, UI ilə qarşılıqlı əlaqə səhvən deaktiv edilə bilər.
  • Auto Layout səhvləri: Yanlış Auto Layout tənzimləmələri, WKWebView-in görünməz olmasına (ölçü 0, başqa görünüş tərəfindən gizlənmiş) və ya ekran xaricində yerləşməsinə səbəb ola bilər, bu da onu istifadəçi qarşılıqlı əlaqəsi üçün aktiv etməz.

Vue kontekstində, WKWebView daxilində işləyən, bu iOS-ə xas səbəblər, touchstart, touchend, click və s. hadisələrin, Vue direktivlərinin (v-on:click, @tap Quasar/Ionic Vue-də) və ya hadisələrin birbaşa işlənməsi üçün lazım olanların, sadəcə olaraq, WKWebView-dəki JavaScript koduna çatmamasına səbəb olur. Belə bir vəziyyətdə debugging üçün, Xcode-də görünüşlər hierarxiyasını (ViewController Hierarchy Debugger) və isUserInteractionEnabled xüsusiyyətinin müxtəlif səviyyələrdə vəziyyətini yoxlamaq lazımdır.