U kojim situacijama može doći do stanja kada je unos korisnika onemogućen (korisnička interakcija je false) i Vue ne može da obradi događaje dodira?
sobes.tech АИ
Одговор од АИ
Stanje user interaction enabled false na nivou UIView u iOS znači da taj UIView i njegovi podređeni elementi ne mogu primati događaje dodira.
Situacije kada se to može dogoditi i uticati na obradu događaja od strane Vue komponenti, na primer, ugrađenih putem WKWebView:
- Prekrivanje prozirnim prikazom: Ako je nad
WKWebViewpostavljen drugi prikaz saisUserInteractionEnabled = truei on potpuno ili delimično prekriva oblastWKWebView, događaji dodira će biti uhvaćeni od strane gornjeg prikaza i Vue komponente uWKWebViewih neće dobiti. - Onemogućavanje interakcije za
WKWebView: SvojstvoisUserInteractionEnabledsamogWKWebViewje postavljeno nafalse. To potpuno onemogućava obradu dodira unutar veb prikaza. - Onemogućavanje interakcije za roditeljski prikaz
WKWebView: Ako jeWKWebViewpodređeni prikaz nekogUIView, i taj roditeljskiUIViewimaisUserInteractionEnabled = false, tada svi njegovi podređeni prikazi, uključujućiWKWebView, takođe neće primati događaje dodira. - Modularni prikazi ili alert kontroleri: Prikaz modualnog prikaza (
UIViewController.present) ili sistemskog alert kontrolera iznad glavnog prikaza koji sadržiWKWebViewpresreće sve događaje dodira dok se modualni prikaz ili alert ne zatvore. - Animacije: Tokom nekih animacija može privremeno biti onemogućena interakcija sa prikazom kako bi se sprečile neželjene radnje korisnika tokom animacije.
- Dugotrajne pozadinske operacije: U starijim arhitekturama ili pri pogrešnoj implementaciji, tokom izvršavanja dugotrajne pozadinske zadatka (npr. učitavanje podataka) može biti grešno onemogućena interakcija sa UI-jem kako bi se sprečile radnje korisnika do završetka operacije.
- Greške u Auto Layout-u: Neispravne postavke Auto Layout-a mogu dovesti do toga da
WKWebViewbude nevidljiv (veličine 0, sakriven iza drugog prikaza) ili da mu okvir bude van ekrana, što ga čini neaktivnim za interakciju korisnika.
U kontekstu Vue, koji radi unutar WKWebView, svi ovi iOS-specifični razlozi mogu dovesti do toga da događaji touchstart, touchend, click i slično, koji su potrebni za rad Vue-direktiva (v-on:click, @tap u Quasar/Ionic Vue) ili za obradu događaja direktno, jednostavno ne stignu do JavaScript koda u WKWebView. Otklanjanje grešaka u takvoj situaciji zahteva proveru hijerarhije prikaza u Xcode (ViewController Hierarchy Debugger) i stanja svojstva isUserInteractionEnabled na različitim nivoima.