Utsette samtalen til representanten metoden - mapView: regionDidChangeAnimated:

stemmer
3

Når brukeren ruller kart eller zoomer inn / ut, blir denne metoden kalles umiddelbart. Jeg ønsker å utsette samtalen til denne metoden ved å si 2 sek. Er det mulig å gjøre det?

Publisert på 17/04/2010 klokken 21:27
kilden bruker
På andre språk...                            


2 svar

stemmer
4

Du kan implementere denne metoden slik:

-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
    NSNumber *animatedNumber = [NSNumber numberWithBool:animated];
    NSArray *args = [[NSArray alloc] initWithObjects:mapView,
                                                     animatedNumber,nil];

    [self performSelector:@selector(delayedMapViewRegionDidChangeAnimated:)
          withObject:args
          afterDelay:2.0f];

    [args release];
}

Så, et sted i samme klasse:

-(void)delayedMapViewRegionDidChangeAnimated:(NSArray *)args
{
  MKMapView *mapView = [args objectAtIndex:0];
  BOOL animated = [[args objectAtIndex:1] boolValue];

  // do what you would have done in mapView:regionDidChangeAnimated: here
}

Selvfølgelig, hvis du ikke trenger en av disse argumentene (enten mapVieweller animated), kan du gjøre dette betydelig enklere ved å bare passerer den du trenger.

Hvis du ikke kan bare redigere koden for din MKMapViewDelegate, kanskje du kunne gjøre noe lignende med metoden swizzling, selv om så du får virkelig Hacky.

Svarte 17/04/2010 kl. 23:43
kilden bruker

stemmer
0

Du kan sende en forsinket melding med performSelector:withObject:afterDelay:eller en av dens relaterte metoder.

Svarte 17/04/2010 kl. 23:19
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more