Zpozdit volání metody delegáta - MapView: regionDidChangeAnimated:

hlasů
3

Kdykoliv map uživatel svitky nebo přiblíží in / out, tato metoda volána okamžitě. Chci odložit volání této metody řekněme 2 sekundy. Je možné to udělat?

Položena 17/04/2010 v 22:27
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
4

Dalo by se zavést tuto metodu, jako je tento:

-(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];
}

Pak se někde ve stejné třídě:

-(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
}

Samozřejmě, pokud nechcete potřebovat jeden z těchto argumentů (buď mapViewnebo animated), mohli byste, aby to mnohem jednodušší pouhým předáním ten, který dělal potřebu.

Pokud nemůžete jen upravit kód pro vaše MKMapViewDelegate, možná byste mohli udělat něco podobného s metodou závislé míchání, i když pak začínáš opravdu hacky.

Odpovězeno 18/04/2010 v 00:43
zdroj uživatelem

hlasů
0

Můžete poslat zprávu s zpožděný performSelector:withObject:afterDelay:nebo jeden z jejích přidružených metod.

Odpovězeno 18/04/2010 v 00:19
zdroj uživatelem

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