Sobes.tech
Middle+

Kādās situācijās var rasties stāvoklis, kad lietotāja ievade ir atspējota (lietotāja mijiedarbība ir false) un Vue nevar apstrādāt skāriena notikumus?

sobes.tech AI

Atbilde no AI

user interaction enabled false stāvoklis UIView līmenī iOS nozīmē, ka šis UIView un tā apakšsastāvdaļas nevar saņemt pieskāriena notikumus.

Situācijas, kad tas var notikt un ietekmēt Vue komponentu, piemēram, WKWebView iekšienē ievietoto, notikumu apstrādi:

  • Caurspīdīga pārklājuma novietošana: Ja virs WKWebView ir novietots cits skats ar isUserInteractionEnabled = true un tas pilnībā vai daļēji pārklāj WKWebView apgabalu, pieskāriena notikumi tiks noķerti augšējā skatā un Vue komponenti WKWebView tos nesaņems.
  • WKWebView interaktivitātes atslēgšana: WKWebView pašas īpašība isUserInteractionEnabled ir iestatīta uz false. Tas pilnībā atslēdz pieskāriena apstrādi iekšienē.
  • Vecāku skata interaktivitātes atslēgšana: Ja WKWebView ir kāda UIView bērns, un šis vecāku skats ir iestatīts uz isUserInteractionEnabled = false, tad visi tā bērni, ieskaitot WKWebView, nesaņems pieskāriena notikumus.
  • Modālas skata vai sistēmas brīdinājuma kontrolieri: Modāla skata (UIViewController.present) vai sistēmas brīdinājuma kontroliera parādīšana virs galvenā skata, kas satur WKWebView, pārņem visus pieskāriena notikumus līdz brīdim, kad modālais skats vai brīdinājums tiek aizvērts.
  • Animācijas: Dažos gadījumos, veicot animācijas, var īslaicīgi atslēgt interaktivitāti ar skatu, lai novērstu nevēlamas lietotāja darbības animācijas laikā.
  • Ilgstošas fonu operācijas: Vecākās arhitektūrās vai nepareizas īstenošanas gadījumā, veicot ilgstošu fonu uzdevumu (piemēram, datu ielādi), var kļūdaini atslēgt UI interaktivitāti, lai novērstu lietotāja darbības līdz operācijas beigām.
  • Auto Layout kļūdas: Nepareizi Auto Layout iestatījumi var novest pie tā, ka WKWebView būs neredzams (izmērs 0, slēpts aiz cita skata) vai tā rāmis būs ārpus ekrāna, kas faktiski padara to neaktīvu lietotāja mijiedarbībai.

Vue kontekstā, kas darbojas WKWebView iekšienē, šie iOS specifiskie iemesli var novest pie tā, ka notikumi touchstart, touchend, click un citi, kas ir nepieciešami Vue direktīvām (v-on:click, @tap Quasar/Ionic Vue) vai tieši notikumu apstrādei, vienkārši nesasniedz JavaScript kodu WKWebView. Šādas situācijas kļūdu novēršanai ir nepieciešama skatu hierarhijas pārbaude Xcode (ViewController Hierarchy Debugger) un isUserInteractionEnabled īpašības stāvokļa pārbaude dažādos līmeņos.