Video: Juegos para iOS - Flappy Bird con Swift 10 - Detectar Colisiones @JoseCodFacilito 2024
De fleste hendelsene som sendes til et iOS-program, 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 RTAppDelegate) alle arver fra UIResponder.
Etter å ha trukket en hendelse utenfor hendelsekøen, sender applikasjonen den hendelsen til UIWindow-objektet der den oppstod. Vinduet objektet, i sin tur, videresender 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 med koblede responder objekter er kjent som responder kjeden. Meldinger fortsetter å reise opp responderkjeden - mot responderobjekter på høyere nivå, for eksempel vinduet, applikasjonen og programmets delegat - til hendelsen enten håndteres eller kasseres.
Responder-objektet som håndterer et arrangement, setter ofte i gang en rekke programmeringshandlinger av applikasjonen. Følgende liste gir kronologien til det som faktisk skjer når brukeren taper noe:
-
Du har en hendelse - brukeren tapper en knapp, for eksempel.
Ved å trykke på en finger (eller løft av en finger fra skjermen) legger du til en berøringshendelse i programmets hendelseskø, der det er innkapslet - plassert i, med andre ord - en 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 sine fingre, rapporterer systemet endringene for hver finger i det tilsvarende objektet.
-
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 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 UIViewController (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 gir deg mulighet til å 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 (vanligvis visningsregulatoren), og du er i utgangspunktet satt.
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.
-
Din søknad returnerer deretter til løpesløyfen.
Etter at en hendelse er håndtert eller kassert, går applikasjonskontrollen tilbake til løpebrytingen. Run-løkken behandler deretter neste hendelse eller setter tråden i dvale hvis den ikke har noe mer å gjøre.
Men fordi søknaden din ikke er alene på enheten, kan den bli avbrutt av en SMS-melding, eller brukeren berører Hjem-knappen. Når søknaden din avbrytes, må du ta vare på noen ting før kontrollen blir byttet til et annet program.