如何等到当前位置对话框回答运行方法?
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:
【讨论】:
以上是关于如何等到当前位置对话框回答运行方法?的主要内容,如果未能解决你的问题,请参考以下文章