title: Managing compass calibration alert
body: <p>As per Apple documentation:</p>
  
  <pre><code>- (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager
  </code></pre>
  
  <blockquote>
    <p>If you return YES from this method, Core Location displays the heading
    calibration alert on top of the current window immediately. </p>
    
    <p>If you return NO from this method or do not provide an implementation for it
    in your delegate, Core Location does not display the heading
    calibration alert. Even if the alert is not displayed, calibration can
    still occur naturally when any interfering magnetic fields move away
    from the device.</p>
  </blockquote>
  
  <p>I want the exact behaviour as Apple documented that <strong>if return NO or do not provide an implementation alert will not be shown</strong>.</p>
  
  <p>I'm getting exactly opposite behaviour. I tried the following:</p>
  
  <ol>
  <li><p>I didn't provide the method implementation mentioned above.
  <strong><em>Result : Still getting the calibration alert</em></strong></p></li>
  <li><p>I provided the method implementation and return YES/NO tried both. 
  <strong><em>Result : Still getting the calibration alert, seems like there is no affect of an implementation.</em></strong></p></li>
  </ol>
  
  <p><strong>NOTE: Method implementation was being called, when implemented the method.</strong></p>
  
  <p>I did a lot of research as well, found some similar question too on stackoverflow but didn't got the solution from any of them.</p>
  
  <p>Any help will be highly appreciated.
  Thanks in advance.</p>
  
  <p>Adding a source:</p>
  
  <pre><code>self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.delegate = self;
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
    self.locationManager.distanceFilter = 10.0;
  
  #ifdef __IPHONE_8_0
  
    if (IS_IOS8_AND_UP) 
      [self.locationManager requestAlwaysAuthorization];
  #endif
    [self.locationManager startUpdatingLocation];
    [self.locationManager startUpdatingHeading];
  
  
  - (BOOL)locationManagerShouldDisplayHeadingCalibration:
              (CLLocationManager *)manager {
    return NO;
  }
  </code></pre>
  
  <p>This method is being called before showing the calibrating window.</p>