Touch Screens har blitt grunnlaget for moderne smartphone brukerinteraksjon. I denne opplæringen lærer du hvordan du blir varslet når brukeren samhandler med berøringsskjermen, og hvordan du bruker berøringshendelser på en praktisk måte.
IOS SDK gir et stort bibliotek med kontroller for å hjelpe deg med å komme i gang med å bygge brukergrensesnittet ditt uten å måtte håndtere individuelle berøringer. Noen ganger kan disse kontrollene ikke implementere funksjonaliteten du leter etter, og du må kanskje behandle berøringshendelser selv.
Ved hjelp av UIKit-rammen kan du få tilgang til berøringshendelser i to klasser, UIView
, og UIViewController
, begge deler, UIResponder
som implementerer berøringshendelser.
Bruk av fire av UIResponder
Metoder du kan implementere din egen kode på berøringshendelser. Disse fire metodene er:
touchesBegan: withEvent:
- Sendes når fingrene blir rørt ned.touchesEnded: withEvent:
- Sendes når fingrene blir rørt.touchesMoved: withEvent:
- Sendes når fingrene beveger seg på berøringsskjermen.touchesCancelled: withEvent:
- Sendt når et trykk ble avbrutt av en hendelse som en telefonsamtale.La oss nå lage en enkel demonstrasjon av disse berøringshendelsene. Lag et nytt XCode-prosjekt. Velg? Vis basert søknad "hit neste og fyll inn ditt firmaidentifikator og? Touches" som prosjektnavn.
I TouchesViewController.m, importer Quartz Core ved å legge til følgende linje:
#importere
Vi trenger Quartz Core for å få sirkler til å vises på skjermen hvor berøringen skjer.
Nå, i samme fil, erstatt viewDidLoad
metode med følgende:
- (void) viewDidLoad [super viewDidLoad]; [self.view setMultipleTouchEnabled: YES];
Dette vil aktivere multi-touch i vårt syn, så en berøringshendelse vil inneholde flere detaljer for oss å bruke.
Nå kan vi fullføre kjernen i vår søknad ved hjelp av touchesBegan: withEvent:
begivenhet. Legg til følgende metode under viewDidLoad:
.
-(ugyldig) berørerBegan: (NSSet *) berører withEvent: (UIEvent *) hendelse // Fjern gamle røde sirkler på skjermen NSArray * subviews = [self.view subviews]; for (UIView * visning i undervisninger) [se removeFromSuperview]; // Oppsummer over alle berøringene og tegne en rød prikk på skjermen hvor berøringen var [berører enumerateObjectsUsingBlock: ^ (id obj, BOOL * stopp) // Få et enkelt trykk og det er stedet UITouch * touch = obj; CGPoint touchPoint = [touch locationInView: self.view]; // Tegn en rød sirkel der kontakten skjedde UIView * touchView = [[UIView alloc] init]; [touchView setBackgroundColor: [UIColor redColor]]; touchView.frame = CGRectMake (touchPoint.x, touchPoint.y, 30, 30); touchView.layer.cornerRadius = 15; [self.view addSubview: touchView]; [touchView release]; ];
Denne metoden tar bare settet av berøringer som sendes til det, sløyfer over hvert trykk, og trekker en rød sirkel der kontakten skjedde på skjermen.
Hvis du bygger og driver søknaden din, bør du nå se et sluttprodukt som ligner noe slikt:
Og det er det, det er alt som trengs for å implementere tilpasset berøringshåndtering i ditt neste iOS-prosjekt. Takk for at du leser, og hvis du har noen spørsmål / kommentarer, kan du legge igjen en kommentar nedenfor.