0

ClLocationManagerコードがありますviewWillAppear。私は同じView Controllerで、Webビューを開くボタンを持っています。ユーザーがボタンをタップしたときに、すぐにロケーション マネージャーを停止したい。と を使用[locationManager stopUpdating]してlocationManager.delegate = nilいます。CLLOCATIONデリゲート メソッドから、MFMailComposerシートを開きます。

問題: (Web ビューを開いている) ボタンをクリックした後でも、MailComposerCode実行されます。それを止める方法は?

-(void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:animated];
    [self setUpProgressBar];

    if (webViewButtonClicked == YES)//when user came bck from web view pick up latest coordinates
    {
        webViewButtonClicked = NO;
        [self getLocationCoordinates];
    }
    else//get latest coordinates from CLLocation manger
    {
        if (!locationManager) {
            locationManager = [[CLLocationManager alloc] init];
        }
        if (!self.geocoder) {
            self.geocoder = [[CLGeocoder alloc] init];
        }

        locationManager.delegate = self;
        // This is the most important property to set for the manager. It ultimately determines how the manager will
        // attempt to acquire location and thus, the amount of power that will be consumed.
        locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        // When "tracking" the user, the distance filter can be used to control the frequency with which location measurements
        // are delivered by the manager. If the change in distance is less than the filter, a location will not be delivered.
        locationManager.distanceFilter = kCLLocationAccuracyNearestTenMeters;
        // Once configured, the location manager must be "started".
        [locationManager startUpdatingLocation];
    }
}

- (IBAction)goToWEBVIEW
{
    NSLog(@"setting to YES");

    webViewButtonClicked = YES;
    [locationManager stopUpdatingLocation];
    locationManager.delegate = nil;

    aWebViewController = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:nil];
    [self.navigationController aWebViewController animated:NO];
}

CLLocationManager委任方法:

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
    if (webViewButtonClicked==NO)
    {
        NSLog(@"1234");
        if (!self.sender) {
            [self.gpsActivityindicator stopAnimating];
            [self stopUpdatingLocation:@""];
            self.destinationForProgressView = .25;
            [NSThread detachNewThreadSelector:@selector(startTheBackgroundJob) toTarget:self withObject:nil];
            **[self openMailComposer];**
        }
    }
}

goToWebViewしたがって、メソッドでフラグを持っていることがわかりますがwebViewButtonClicked = YES、ユーザーが Web ビュー ボタンをタップする前にデリゲート メソッドが呼び出されます。それで状態if (webViewButtonClicked==NO)true?このシナリオを停止するにはどうすればよいですか?

ありがとう。

4

2 に答える 2