Hjem Sosiale medier Slik sporer du støy i din iOS-app - dummies

Slik sporer du støy i din iOS-app - dummies

Video: 10 Evernote Hacks & Tips 2024

Video: 10 Evernote Hacks & Tips 2024
Anonim

Det ville være fint å kunne dra en bil og plassere den hvor som helst på skjermen i din iOS-app. Her finner du ut hvordan du kodes for å dra et objekt, samt hvordan berører det på en iOS-enhet.

Knappen av en finger (eller løfte den fra skjermen) legger til en berøringshendelse i programmets hendelseskø, der den er innkapslet (inneholdt) i et UIEvent-objekt. Et UITouch-objekt eksisterer for hver finger som berører skjermen, som gjør det mulig å spore individuelle berøringer.

Berøringen: medEvent: meldingen sendes når en eller flere fingre berører ned i en visning. Denne meldingen er en metode for TestDriveController's superklasse, UIResponder, hvorfra kontrolleren av kontroll er avledet.

Når brukeren fortsetter å berøre skjermen med sine fingre, rapporterer systemet endringene for hver finger i det tilsvarende UITouch-objektet, og sender dermed touchesMoved: withEvent: message. BerøringenEnded: withEvent: melding sendes når en eller flere fingre løftes fra den tilknyttede visningen. BerøringenCancelled: withEvent: melding, derimot, sendes når en systemhendelse (for eksempel en advarsel om lavminnet) avbryter en berøringshendelse.

I denne appen må du bare være opptatt av de to første metodene som nettopp er beskrevet.

For å starte prosessen med å svare på en berøringshendelse, legg til en ny instansvariabel (fet skrift) til TestDriveController. m implementeringsfil.

@interface TestDriveController () {AVAudioPlayer * backgroundAudioPlayer; SystemSoundID burnRubberSoundID; BOOL touchInCar; } -d

Deretter legger du til berøringenBegan: metode til TestDriveController. m for å begynne å spore berører. (Du overstyrer faktisk denne metoden fordi UIViewController arvet den fra UIResponder-basen.)

- (void) berørerBegan: (NSSet *) berører withEvent: (UIEvent *) hendelse {UITouch * touch = [berører anyObject]; hvis (CGRectContainsPoint (selvbilde. ramme, [berøringsstedInView: selvbildevisning])) touchInCar = YES; ellers {touchInCar = NO; [super touchesBegan: touchesEvent: event];}}

Som nevnt tidligere, blir touchesBegan: withEvent: melding sendt når en eller flere fingre rører ned i en visning. Berøringene blir overført til metoden i en NSSet-objekt - en uordnet samling av forskjellige elementer.

For å få tilgang til et objekt i NSSet, bruk anyObject-metoden - det returnerer ett av objektene i settet. For vårt formål her antar du bare ett objekt - men du vil kanskje utforske dette problemet ytterligere på egen hånd slik at du kan forstå hvordan du kan håndtere flere muligheter.

Følgende kode viser hvordan du konfigurerer anyObject-metoden:

UITouch * touch = [berører anyObject];

Deretter må koden avgjøre om brukerens berøringshendelse er i bilvisningen (UIImage):

hvis (CGRectContainsPoint (selv.bil. ramme, [touch locationInView: selv. se])))

CGRectContainsPoint er en funksjon som returnerer JA når et rektangel (se koordinater) inneholder et punkt. Du angir bilens ramme som rektangel:

selv. bil. ramme

, og du angir punktet ved å sende posisjonInView: melding til berøring:

locationInView: selv. se

locationInView: returnerer gjeldende posisjon for mottakeren i koordinatsystemet i den gitte visningen. I dette tilfellet bruker du hovedvisningen, men du vil kanskje endre visningen hvis du prøver å bestemme plasseringen i en annen visning, for eksempel. Kanskje brukeren berører en isty-bitty gasspedal.

Hvis det er fastslått at kontakten er i bilen, tilordner du JA til touchInCar-instansvariabelen; Hvis det ikke er tilfelle, tilordner du NO og videresender meldingen opp responderkjeden. Du bruker touchInCar senere for å avgjøre om brukeren drar bilen rundt eller bare kjører fingeren over skjermen.

Standard implementering av berøringerBegan: gjør ingenting. Imidlertid sender underklasser direkte fra UIResponder, spesielt UIView, meldingen opp responderkjeden. For å videresende meldingen til neste responder, send meldingen til super (superklassimplementasjonen).

Hvis du tilsidesætter berørerBegan: withEvent: uten å ringe super (et vanlig bruk mønster), må du også overstyre de andre metodene for håndtering av berøringshendelser, hvis det bare er stub (tomme) implementeringer.

Flere berøringer er deaktivert som standard. For å tillate at appen din mottar flere berøringshendelser, må du sette egenskapen multipleTouchEnabled til den tilsvarende visningseksemplet til JA.

Når brukere flytter bilen rundt skjermen (kanskje sier zoomzoom til seg selv), blir appen din hele tiden sendt på touchenMoved: message. Legg til koden i liste 10-13 til TestDriveController. m for å overstyre den metoden, som gjør at du kan flytte bilen til hvor brukerens finger er.

- (void) touchesMoved: (NSSet *) berører withEvent: (UIEvent *) hendelse {if (touchInCar) {UITouch * touch = [berører anyObject]; selv. bil. center = [touch locationInView: selv. vise];} ellers [super touchesMoved: touchesEvent: event];}

Hvis det første trykket var i bilvisningen (touchInCar er YES), tilordner du bilens senteregenskap til berørings koordinaten. Når du tilordner en ny verdi til senteregenskapen, blir visningsplassen umiddelbart endret. Ellers ignorerer du berøringen og videresender meldingen opp responderkjeden.

Det er interessant å observere at når du plasserer bilen ved siden av en knapp, vil den bevege seg under den knappen når du trykker på Test Drive-knappen. Denne funksjonen illustrerer understrukturen.

Forsøk å flytte bilen rundt og deretter bruke Test Drive-knappen. Hvis det er noe galt med formlene dine for å plassere bilen under teststasjonen, vil du se det når bilen starter fra et annet sted.

Slik sporer du støy i din iOS-app - dummies

Redaktørens valg

Bruk skjermfeltet til å endre QuickBooks 2014 Rapporter - dummies

Bruk skjermfeltet til å endre QuickBooks 2014 Rapporter - dummies

Skjermbildet i QuickBooks Modify Report dialogboksen lar deg kontrollere rapportintervalldatoen, rapportgrunnlaget, kolonnene og en annen formatering. Bokstavene Rapporter datoområde - Datoer, Fra og Til - gjør det samme som Datoer, Fra og Til bokser i Rapportvinduet. Disse boksene lar ...

Bruk skjermfeltet til å modifisere QuickBooks 2013 Rapporter - dummies

Bruk skjermfeltet til å modifisere QuickBooks 2013 Rapporter - dummies

Hvis du klikker Tilpass rapport, QuickBooks viser dialogboksen Endre rapport, som du kan bruke til å tilpasse en rapport. Når du tilpasser en rapport, endrer du rapportens utseende, layout og informasjonen som den oppsummerer. Dialogboksen Endre rapport ser annerledes ut for ulike rapporttyper. Likevel, hvis du ser forbi ...

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Filtrene kategorien er trolig den mest interessante og en nyttig kategori som er levert av dialogboksen QuickBooks Modify Report. Filtre-fanen lar deg sette opp filtre som du kan bruke til å angi hvilken informasjon som oppsummeres i rapporten. For å bruke Filtrer-fanen velger du først feltet du vil ha ...

Redaktørens valg

Administrere Cloud Computing Resources - dummies

Administrere Cloud Computing Resources - dummies

I teorien bør cloud computing-tjenester ikke være forskjellig fra ressursene i din eget miljø, bortsett fra at de bor eksternt. Ideelt sett har du en komplett visning av cloud computing-ressursene du bruker i dag, eller vil kanskje bruke i fremtiden. I de fleste skymiljøer kan kunden bare få tilgang til ...

Tips for Going Cloud med datanettverkene dine - dummies

Tips for Going Cloud med datanettverkene dine - dummies

Beregning med datanettverket ditt kan være, hva skal du gjøre for å ta nettverket ditt mot skyen? Her er noen anbefalinger: Ikke stole på en dårlig Internett-tilkobling. Først og fremst, før du tar noen av nettverksoperasjonene i skyen, gjør du ...

Nettverkstjenester levert gjennom Cloud Computing - dummies

Nettverkstjenester levert gjennom Cloud Computing - dummies

Tre forskjellige typer nettverkstjenester kan leveres via skyen: applikasjoner , plattformer og tjenester (infrastruktur). I de følgende avsnittene beskrives disse tre typer skyttjenester i større detalj. Programmer i skyen Vanligvis kalt Software as a Service (SaaS), fullt funksjonelle applikasjoner kan leveres via skyen. En av ...

Redaktørens valg

10 Hadoop Ressurser verdt en bokmerke - dummies

10 Hadoop Ressurser verdt en bokmerke - dummies

Følgende er ti fantastiske Hadoop-ressurser som er verdige til å skape en bokmerke i nettleseren din. Disse ressursene hjelper deg med å skape en livslang læringsplan for Hadoop. Sentralnervesystemet: Apache. org Apache Software Foundation (ASF) er det sentrale fellesskapet for open source-programvareprosjekter. Ikke bare et prosjekt kan være et Apache-prosjekt - ...

Data transformasjon i Hadoop - dummies

Data transformasjon i Hadoop - dummies

Ideen om Hadoop-inspirerte ETL motorer har fått mye trekkraft de siste årene. Hadoop er trods alt en fleksibel datalagrings- og behandlingsplattform som kan støtte store mengder data og operasjoner på dataene. Samtidig er det feiltolerant, og det gir mulighet for kapital- og programvarekostnad ...

Datablokker i Hadoop Distributed File System (HDFS) - dummier

Datablokker i Hadoop Distributed File System (HDFS) - dummier

Når du lagrer en fil i HDFS, bryter systemet det ned i et sett med individuelle blokker og lagrer disse blokkene i forskjellige slave noder i Hadoop-klyngen. Dette er en helt vanlig ting å gjøre, da alle filsystemer bryter filer ned i blokker før de lagres til disk. HDFS har ingen ...