प्रतिनिधि विधि करने के लिए कॉल में देरी - MapView: regionDidChangeAnimated:

वोट
3

जब भी उपयोगकर्ता स्क्रॉल नक्शा या / बाहर ज़ूम, इस विधि को तुरंत बुलाया जाता है। मैं कहना द्वारा 2 सेकेंड इस पद्धति को कॉल देरी करने के लिए चाहते हैं। क्या यह करना मुमकिन है?

17/04/2010 को 22:27
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
4

आप इस तरह है कि विधि को लागू कर सकते हैं:

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

फिर, एक ही कक्षा में कहीं न कहीं:

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

बेशक, अगर आप उन तर्कों में से एक (या तो ज़रूरत नहीं है mapViewया animated), तो आप इस काफी सरल केवल एक ही आप की जरूरत किया था पारित करके बना सकते हैं।

आप बस अपने लिए कोड को संपादित नहीं कर सकते MKMapViewDelegate, शायद आप विधि swizzling के साथ इसी तरह कुछ कर सकते हैं, हालांकि फिर तुम हो रही है वास्तव में hacky।

18/04/2010 को 00:43
का स्रोत उपयोगकर्ता

वोट
0

आप के साथ एक देरी संदेश भेज सकते हैं performSelector:withObject:afterDelay:या उससे संबंधित विधियों में से एक।

18/04/2010 को 00:19
का स्रोत उपयोगकर्ता

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