Hjem Social Media Hvordan man sporer tuffer i din iOS-app - dummies

Hvordan man sporer tuffer i din iOS-app - dummies

Video: Driver app announcement with Uber CEO | April 10, 2018 | Uber 2025

Video: Driver app announcement with Uber CEO | April 10, 2018 | Uber 2025
Anonim

Det ville være rart at kunne trække en bil og placere den overalt på skærmen i din iOS-app. Her finder du ud af, hvordan man kode for at trække et objekt, samt hvordan man arbejder på en iOS-enhed.

Ved at trykke på en finger (eller løfte den fra skærmen) tilføjes en berøringshændelse til programmets begivenhedskø, hvor den er indkapslet (indeholdt) i et UIEvent-objekt. Der findes en UITouch-objekt for hver finger, der berører skærmen, som gør det muligt at spore individuelle berøringer.

TouchenBegan: withEvent: Meddelelsen sendes, når en eller flere fingre rører ned i en visning. Denne meddelelse er en metode til TestDriveController's superklasse, UIResponder, hvorfra reguleringsenheden er afledt.

Når brugeren fortsætter med at berøre skærmen med sine fingre, rapporterer systemet ændringerne for hver finger i det tilsvarende UITouch-objekt, hvorved man sender touchesMoved:withEvent: message. TouchEnded: withEvent: Meddelelsen sendes, når en eller flere fingre løftes fra den tilknyttede visning. RøreneCancelled: withEvent: Besked, derimod, sendes, når en systemhændelse (som f.eks. En advarsel om hukommelse) annullerer en berøringshændelse.

I denne app behøver du kun være bekymret over de to første metoder, der netop er beskrevet.

For at starte processen med at reagere på en berøringshændelse skal du tilføje en ny instansvariabel (fed) til TestDriveController. m implementeringsfil.

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

Tilføj derefter touchesBegan: -metoden til TestDriveController. m for at starte sporing berører. (Du overstyrer faktisk denne metode, fordi UIViewController arvede den fra UIResponder-basen.)

- (void) berørerBegan: (NSSet *) berører medEvent: (UIEvent *) hændelse {UITouch * touch = [berører anyObject]; hvis (CGRectContainsPoint (selvbil. frame, [touch locationInView: self. view])) touchInCar = YES; ellers {touchInCar = NO; [super touchesBegan: touchesEvent: event];}}

Som tidligere nævnt sendes touchesBegan: withEvent: besked når en eller flere fingre rører ned i en visning. Rørene selv overføres til metoden i en NSSet-objekt - en uordnet samling af forskellige elementer.

For at få adgang til et objekt i NSSet skal du bruge anyObject-metoden - den returnerer et af objekterne i sættet. Til vores formål her antager du kun ét objekt - men du vil måske gerne udforske dette problem yderligere alene, så du kan forstå, hvordan du kan håndtere yderligere muligheder.

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

UITouch * touch = [berører anyObject];

Derefter skal koden afgøre, om brugerens berøringsbegivenhed er i bilens (UIImage) visning:

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

CGRectContainsPoint er en funktion, der returnerer JA, når et rektangel (se koordinater) indeholder et punkt. Du angiver bilens ramme som rektangel:

selv. bil. frame

, og du angiver punktet ved at sende positionInView: meddelelse til berøring:

locationInView: self. visning

locationInView: Returnerer modtagerens aktuelle placering i koordinatsystemet i det givne billede. I dette tilfælde bruger du hovedvisningen, men du vil måske ændre visningen, hvis du f.eks. Forsøger at bestemme placeringen i en anden visning. Måske rører brugeren en itty-bitty gaspedal.

Hvis det er fastslået, at kontakten er i bilen, tildeler du JA til touchInCar-instansvariablen; Hvis det ikke er tilfældet, tildeler du NEJ og videresender meddelelsen op over responderkæden. Du bruger touchInCar senere til at bestemme om brugeren trækker bilen rundt eller bare kører fingeren over skærmen.

Standard implementering af berøringerBegan: gør ingenting. Men underklasser afledt direkte fra UIResponder, især UIView, videresender meddelelsen op over responderkæden. For at videresende beskeden til næste responder, send beskeden til super (superklassimplementeringen).

Hvis du tilsidesætter berøringerBegan: withEvent: uden at kalde super (et almindeligt brugsmønster), skal du også tilsidesætte de andre metoder til håndtering af berøringshændelser, hvis det kun er som stub (tomme) implementeringer.

Flere tryk er deaktiveret som standard. For at gøre det muligt for din app at modtage flere berøringshændelser, skal du angive egenskaben multipleTouchEnabled for den tilsvarende visningseksempel til JA.

Når brugerne flytter bilen skarpt rundt på skærmen (måske siger zoom zoom til sig selv), bliver din app hele tiden sendt til touchesMoved: message. Tilføj koden i Listing 10-13 til TestDriveController. m at tilsidesætte denne metode, som gør det muligt for dig at flytte bilen til hvor brugerens finger er.

- (void) touchesMoved: (NSSet *) berører medEvent: (UIEvent *) hændelse {if (touchInCar) {UITouch * touch = [berører anyObject]; selv. bil. center = [touch locationInView: self. visning];} ellers [super touchesMoved: touchesEvent: event];}

Hvis det første tryk var i bilvisningen (touchInCar er YES), tildeler du bilens centeregenskab til berøringskoordinatet. Når du tildeler en ny værdi til centeregenskaben, ændres visningen øjeblikkeligt. Ellers ignorerer du kontakten og videresender meddelelsen op over responderkæden.

Det er interessant at bemærke, at når du placerer bilen ved siden af ​​en knap, vil den køre under den knap, når du trykker på testdrev knappen. Denne funktion illustrerer understrukturen.

Forsøg at flytte bilen rundt og derefter bruge Test Drive-knappen. Hvis der er noget galt med dine formler til placering af bilen under testdrevet, vil du se det, når bilen starter fra et andet sted.

Hvordan man sporer tuffer i din iOS-app - dummies

Valg af editor

Fleksibel levering med Exchange Online fra Office 365 - dummies

Fleksibel levering med Exchange Online fra Office 365 - dummies

Ud over forudsigeligheden af ​​implementeringsomkostningerne i både tid og ressourcer, Exchange Online fra Office 365 giver mulighed for nemt at justere antallet af licenser til personer, der bruger softwaren. En ansættelsesleder kan planlægge at ansætte 45 personer, men find ud af det senere på året, at de skal ansætte ...

Skriv nye makroer i Visual Basic Editor i Excel 2013 - dummies

Skriv nye makroer i Visual Basic Editor i Excel 2013 - dummies

, Efter at du har færdighed på VBA-sproget, kan du skrive nye makroer fra bunden i Visual Basic Editor i stedet for bare at redigere dem, som du tidligere har optaget i dit regneark ved hjælp af Excels makrooptager. Når du opretter en makro fra bunden i Visual Basic Editor, skal du følge disse generelle ...

Valg af editor

Evergreen Infographics: At lave ting Build - Dummies

Evergreen Infographics: At lave ting Build - Dummies

Evergreen infographics er ikke relateret til nogen begivenhed eller person i nyhederne . De har ingen sæsonbestemt komponent, og de er ikke bundet til noget i rette tid. En infographic om, hvordan cd'er er lavet, vil gælde, fordi det er musikrelateret, men ikke specifikt for nogen kunstner eller genre. Med evergreen infographics ignorerer du fuldstændigt de aktuelle begivenheder og udforsker ideer ...

Undersøgelse af forskellige typer infografier - dummies

Undersøgelse af forskellige typer infografier - dummies

Infographics har skabt stor interesse på internettet på grund af deres evne til at underholde som oplyse. Flere typer infographics er for tiden populære. Følgende liste kan hjælpe dig med at vælge den rigtige type for de oplysninger, du forsøger at illustrere. Case study: Hvis du har foretaget en specifik forespørgsel om et bestemt emne og ...

Find mønstre i dine infografiske data - dummies

Find mønstre i dine infografiske data - dummies

Den menneskelige hjerne søger naturligt mønstre. Spotting mønstre er afgørende for at skabe overbevisende indhold for infographics fordi mønstre peger på et lag af betydning bag dataene og foreslå tilstedeværelsen af ​​et underliggende forhold eller struktur til at undersøge og afværge. Kort sagt er mønstre en anden vigtig måde, som en datalogist finder ...

Valg af editor

Brug histogrammer til sporfrekvens i Excel Dashboards - dummies

Brug histogrammer til sporfrekvens i Excel Dashboards - dummies

Et histogram er en graf, der tegner frekvensfordeling i dine Excel dashboards og rapporter. En frekvensfordeling viser, hvor ofte en begivenhed eller kategori af data opstår. Med et histogram kan du visuelt se den generelle fordeling af en bestemt attribut. Du kan oprette et formelstyret histogram, som giver mulighed for et niveau af automatisering ...

Scenario Manager til Model Lån Beregninger - Dummies

Scenario Manager til Model Lån Beregninger - Dummies

Scenarie Manager er grupperet sammen med Målsøgning og datatabeller i afsnittet What-If Analysis på fanen Data. At være grupperet med andre værktøjer, der er så nyttige, vil få dig til at tro, at Scenario Manager også er et vigtigt redskab til at vide. Men på trods af det nyttige navn og det gode selskab, det holder, ...