Video: Juegos para iOS - Flappy Bird con Swift 10 - Detectar Colisiones @JoseCodFacilito 2024
De fleste hendelsene som sendes til en iOS-app, er innkapslet i et hendelsesobjekt - en forekomst av UIEvent-klassen. I tilfelle berøringsrelaterte hendelser inneholder hendelsesobjektet en eller flere berøringsobjekter (UITouch) som representerer fingrene som berører skjermen.
Når brukeren plasserer fingrene på skjermen, beveger de dem rundt, og fjerner dem til slutt fra skjermen. Systemet rapporterer endringene for hver finger i det tilsvarende berøringsobjektet.
Distribusjon og håndtering hendelser er jobben til responder objekter, som er forekomster av UIResponder klassen. UIApplication, UIViewController, UIWindow og UIView klasser (og din egen AppDelegate) alle arver fra UIResponder. Etter å ha trukket et arrangement utenfor hendelsekøen, sender appen den hendelsen til UIWindow-objektet der det oppstod.
Vinduets objekt videresender igjen hendelsen til sin første responder, utpekt til å være den første mottakeren av andre hendelser enn berøringshendelser. Ved berøringshendelser er den første responderen vanligvis visningsobjektet (UIView) der berøringen fant sted. For eksempel blir en berøringshendelse som forekommer i en knapp, levert til det tilsvarende knappobjektet.
Hvis den første responderen ikke klarer å håndtere en hendelse, videresender hendelsen til sin neste responder, som vanligvis er en Parent View eller View Controller. Hvis objektet ikke klarer å håndtere hendelsen, videresender den det til neste responder, og så videre til hendelsen håndteres.
Denne serien av koblede responder objekter er kjent som responder kjeden. Meldinger fortsetter å reise opp responderkjeden - mot responderobjekter på høyere nivå, for eksempel vinduet, appen og appens delegat - til hendelsen enten håndteres eller kasseres.
Responder-objektet som håndterer et arrangement, setter ofte en rekke programmatiske handlinger av appen i gang. Følgende liste gir kronologien til hva som faktisk skjer når brukeren taper noe:
-
Et berøringshendelseobjekt blir opprettet som svar på brukerens trykk.
Ved å trykke på en finger, legger du til en berøringshendelse i appens hendelseskø, der hendelsen er innkapslet - plassert i, med andre ord - et UIEvent-objekt. Et UITouch-objekt eksisterer for hver finger som berører skjermen, slik at du kan spore individuelle berøringer. Når brukeren manipulerer skjermen med fingrene, rapporterer systemet endringene for hver finger i den tilsvarende UITouch-objekten.
-
Run-loop-monitoren sender hendelsen.
Når noe oppstår som må behandles, berører hendelseshåndteringskoden til UIApplication-prosessene hendelser ved å sende dem til det aktuelle responder objektet - objektet som har registrert seg for å ta ansvar for å gjøre noe når en bestemt type hendelse skjer (når brukeren berører skjermen, for eksempel).
Responder objekter kan inkludere forekomster av UIApplication, UIWindow og UIView (og noen av dens underklasser), samt UIViewConroller (og noen av sin underklasser). Alle disse klassene arver fra UIResponder.
-
Et responderobjekt bestemmer hvordan man skal håndtere hendelsen.
For eksempel leveres en berøringshendelse som skjer med en knapp i en visning, til knappobjektet. Knappobjektet håndterer hendelsen ved å sende en handlingsmelding til et annet objekt - i dette tilfellet UIViewController-objektet. Dette gjør at du kan bruke standardknappobjekter uten å måtte kvele seg i sine internaler - du bare forteller knappen hvilken metode du vil ha påkalt i målet ditt.
Behandling av meldingen kan føre til endringer i en visning, en ny visning helt eller en annen form for endring i brukergrensesnittet. Når et av disse resultatene oppstår, overtar visnings- og grafikkinfrastrukturen og behandler de nødvendige tegningsarrangementene.
-
Appen din vender deretter tilbake til løpesløyfen.
Etter at en hendelse er håndtert eller kassert, går appkontrollen tilbake til løpesløyfen. Run-løkken behandler deretter neste hendelse eller setter tråden i dvale hvis den ikke har noe mer å gjøre.
Men fordi appen din ikke er alene på enheten, kan den bli avbrutt av en SMS-melding, eller brukeren berører Hjem-knappen. Når appen din er avbrutt, må du ta vare på noen ting før kontrollen blir byttet til en annen app.