如何等到当前位置对话框回答运行方法?

Posted

技术标签:

【中文标题】如何等到当前位置对话框回答运行方法?【英文标题】:How to wait until Current Location dialog is answered to run a method? 【发布时间】:2014-09-04 05:37:12 【问题描述】:

根据请求的基于 ios 的 Current Location 对话框(如下图所示)的反馈推送视图控制器的最佳做法是什么?

我试图在选择成功后确定 -> 在流程中继续发送用户或失败 -> 显示要求他们允许当前位置的屏幕。

我已经从按钮按下分配 CLLocationManager 的方法调用此方法:

- (void) confirmInfo 


    BOOL locationAllowed = [CLLocationManager locationServicesEnabled];

    if (locationAllowed==NO) 
        // Show the how-to viewcontroller
     else 
        // Go to the next step onboarding
    


但我不知道如何等到输入从对话框返回后才能选择向用户显示哪个 VC。

【问题讨论】:

【参考方案1】:

您可以让委托方法用户将允许,或者即使用户不允许.. 并且从该响应中您可以继续推送弹出。

您甚至可以尝试基于块的结构来维持您的流程。 以下链接可能对您有所帮助.. https://github.com/intuit/LocationManager 或者 https://github.com/FuerteInternational/FTLocationManager

INTULocationManager *locMgr = [INTULocationManager sharedInstance];
[locMgr requestLocationWithDesiredAccuracy:INTULocationAccuracyCity
                                   timeout:10.0
                      delayUntilAuthorized:YES  // This parameter is optional, defaults to NO if omitted
                                     block:^(CLLocation *currentLocation, INTULocationAccuracy achievedAccuracy, INTULocationStatus status) 
                                         if (status == INTULocationStatusSuccess) 
                                             // Request succeeded, meaning achievedAccuracy is at least the requested accuracy, and
                                             // currentLocation contains the device's current location.
                                         
                                         else if (status == INTULocationStatusTimedOut) 
                                             // Wasn't able to locate the user with the requested accuracy within the timeout interval.
                                             // However, currentLocation contains the best location available (if any) as of right now,
                                             // and achievedAccuracy has info on the accuracy/recency of the location in currentLocation.
                                         
                                         else 
                                             // An error occurred, more info is available by looking at the specific status returned.
                                         
                                     ];

【讨论】:

【参考方案2】:

首先,创建一个CLLocationManager,然后将您的控制器设置为其委托,最后调用[self.locationManager startUpdatingLocations]; 以显示对话框。

然后使用CLLocationManagerDelegate 方法来确定用户选择了什么:

成功后,

– locationManager:didUpdateLocations:

被调用。否则

– locationManager:didFailWithError:

【讨论】:

以上是关于如何等到当前位置对话框回答运行方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何等到对话框真正关闭

如何等到模态对话框在ios中返回结果

如何以编程方式在CKEditor 5中的当前位置插入链接

MFC中如何实现Tab控件里子对话框里的控件跟着对主话框伸缩而改变位置

如何在颤动中回调谷歌位置服务对话框按钮点击?

如何以编程方式在 CKEditor 5 的当前位置插入链接