に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
?このシナリオを停止するにはどうすればよいですか?
ありがとう。