Middle+
Kokiose situacijose gali atsirasti būsena, kai naudotojo įvestis yra išjungta (naudotojo sąveika false) ir Vue negali apdoroti lietimo įvykių?
sobes.tech AI
Atsakymas iš AI
user interaction enabled false būklė UIView lygyje iOS reiškia, kad šis UIView ir jo pogrupiai negali gauti lietimo įvykių.
Situacijos, kai tai gali įvykti ir paveikti Vue komponentų, įskaitant WKWebView įterptus, įvykių apdorojimą:
- Permatomo vaizdo uždengimas: Jei virš
WKWebViewyra kitas vaizdas suisUserInteractionEnabled = trueir jis visiškai arba iš dalies uždengiaWKWebViewsritį, lietimo įvykiai bus gaunami viršutinio vaizdo ir Vue komponentaiWKWebViewjų negaus. WKWebViewsąveikos išjungimas:WKWebViewsavybėisUserInteractionEnabledyra nustatyta įfalse. Tai visiškai išjungia įvykių apdorojimą viduje.- Tėvų vaizdo sąveikos išjungimas: Jei
WKWebViewyra vaikoUIView, ir šis tėvųUIViewturiisUserInteractionEnabled = false, tada visi jo vaikai, įskaitantWKWebView, negaus lietimo įvykių. - Modalūs vaizdai arba sistemos įspėjimo valdikliai: Modalaus vaizdo (
UIViewController.present) arba sistemos įspėjimo valdiklio rodymas virš pagrindinio vaizdo, kuriame yraWKWebView, perima visus lietimo įvykius, kol modalas arba įspėjimas nėra uždarytas. - Animacijos: Kai kuriais atvejais, vykdant animacijas, gali būti laikinai išjungtas sąveika su vaizdu, siekiant išvengti nepageidaujamų vartotojo veiksmų.
- Ilgalaikės foninės operacijos: Senesnėse architektūrose arba netinkamai įgyvendinus, vykdant ilgalaikę foninę užduotį (pvz., duomenų įkėlimą), gali būti klaidingai išjungta sąveika su UI, siekiant išvengti vartotojo veiksmų iki operacijos pabaigos.
- Auto Layout klaidos: Netinkami Auto Layout nustatymai gali lemti, kad
WKWebViewbus nematomas (dydis 0, paslėptas už kito vaizdo) arba jo rėmas bus už ekrano ribų, kas iš esmės padaro jį neaktyviu vartotojo sąveikai.
Vue kontekste, dirbantį WKWebView viduje, šios iOS specifinės priežastys gali lemti, kad įvykiai touchstart, touchend, click ir kt., kurie yra būtini Vue direktyvų (v-on:click, @tap Quasar/Ionic Vue) arba tiesioginiam įvykių apdorojimui, paprasčiausiai nepasieks JavaScript kodo WKWebView. Tokios situacijos klaidų šalinimui reikalinga patikrinti vaizdų hierarchiją Xcode (ViewController Hierarchy Debugger) ir isUserInteractionEnabled būseną skirtinguose lygiuose.