Sobes.tech
Middle+

Millistes olukordades võib tekkida seisund, kus kasutaja sisend on välja lülitatud (kasutaja interaktsioon on false) ja Vue ei saa puudutuste sündmusi töödelda?

sobes.tech AI

Vastus AI-lt

Seisund user interaction enabled false iOS tasemel UIView tähendab, et see UIView ja selle alamklassid ei saa vastu võtta puute sündmusi.

Situatsioonid, kus see võib juhtuda ja mõjutada Vue komponentide, näiteks WKWebView kaudu sisestatud, sündmuste töötlemist:

  • Läbipaistev kattekiht: Kui WKWebView kohal on teine vaade, millel on isUserInteractionEnabled = true ja see katab täielikult või osaliselt WKWebView ala, siis puute sündmused haaratakse ülemise vaate poolt ja WKWebView-i Vue komponendid neid ei saa.
  • WKWebView-i kasutajaliidese kasutamise keelamine: WKWebView-i enda omadus isUserInteractionEnabled on seatud väärtusele false. See täielikult keelab puutetundlikkuse töötlemise veebivaates.
  • WKWebView-i vanema vaate kasutajaliidese kasutamise keelamine: Kui WKWebView on mõne UIView alamklass, ja selle vanemvaade on seatud isUserInteractionEnabled = false, siis ei saa ka selle kõik alamklassid, sh WKWebView, vastu võtta puute sündmusi.
  • Modaalvaated või süsteemi teavituskontrollerid: Modaalne vaade (UIViewController.present) või süsteemi teavituskontroller, mis kuvatakse WKWebView-i sisaldava põhivaate kohal, haarab kõik puute sündmused kuni modaalne vaade või teavitus on suletud.
  • Animatsioonid: Mõnel juhul võib animatsioonide ajal ajutiselt keelata vaate kasutajaliidese kasutamise, et vältida soovimatuid kasutaja tegevusi animatsiooni ajal.
  • Pikaajalised taustategevused: Vanemates arhitektuurides või valesti rakendatud olukordades võib pikaajalise taustategevuse (nt andmete laadimine) ajal olla kasutajaliidese kasutamine valesti keelatud, et vältida kasutaja tegevusi kuni operatsiooni lõppemiseni.
  • Auto Layouti vead: Vale Auto Layouti seadistused võivad põhjustada WKWebView nähtamatuks (suurus 0, varjab teise vaate taga) või selle raami väljaspool ekraani, mis teeb selle kasutaja jaoks mitteaktiivseks.

Vue kontekstis, mis töötab WKWebView sees, võivad kõik need iOS-spetsiifilised põhjused põhjustada seda, et sündmused touchstart, touchend, click ja teised, mis on vajalikud Vue direktiivide (v-on:click, @tap Quasar/Ionic Vue) või otse sündmuste töötlemise jaoks, lihtsalt ei jõua JavaScripti koodini WKWebView-is. Sellise olukorra tõrkeotsing nõuab vaadete hierarhia kontrollimist Xcode'is (ViewController Hierarchy Debugger) ja isUserInteractionEnabled omaduse oleku kontrollimist erinevatel tasemetel.