首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当前位置权限对话框消失得太快

当前位置权限对话框消失得太快
EN

Stack Overflow用户
提问于 2011-10-25 19:56:04
回答 8查看 36.1K关注 0票数 183

我的应用程序获取用户的位置,获取坐标,并提供到或离开他们的目的地或起点的距离。所有这些可能的目的地都显示在一个表视图中,所以我在填充表的同时获得用户的坐标。唯一的问题是,询问用户位置的警告视图出现后很快就消失了,以至于不可能单击它!

有没有办法在应用程序首次加载时手动显示此警报?我试图在应用程序加载时获取用户的位置,试图强制显示警报,但这不起作用。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-02-28 07:34:18

虽然很难追踪,但解决方案非常简单。

通过反复试验,我发现,虽然当你第一次尝试访问应用程序中的任何位置服务时,位置访问对话框会弹出,但如果在用户响应对话框之前释放CLLocationManager对象,该对话框就会自动消失(没有任何用户交互)。

我在我的viewDidLoad方法中创建了一个CLLocationManager实例。由于这是该方法的本地实例,因此该实例在该方法完成执行后由ARC释放。实例一释放,对话框就消失了。解决方案相当简单。将CLLocationManager实例从方法级变量更改为类级实例变量。现在,只有在卸载类之后,才会释放CLLocationManager实例。

票数 741
EN

Stack Overflow用户

发布于 2019-06-23 20:08:14

我也遇到过类似的情况。在调试之后,我发现

代码语言:javascript
复制
let locationManager = CLLocationManager()

在方法范围内调用,但应全局调用。

为什么?

简而言之,locationManager是在方法返回之后发布的。但在用户给予或拒绝许可之前,它不应该被释放

票数 7
EN

Stack Overflow用户

发布于 2011-11-18 00:08:05

我也遇到了同样的问题(至少从症状上看是这样)。在我的例子中,问题出在- (void)applicationWillResignActive:(UIApplication *)application;方法中,我在这个方法中释放了我的CLLocationManager实例,作为后台转换准备的一部分。当我删除它并只把它留在- (void)applicationDidEnterBackground:(UIApplication *)application;中时,这个问题就解决了。

棘手的部分是核心位置警报确实会在应用程序仍在前台时挂起它。

希望对你有帮助,我花了很长时间才找到那个混蛋:)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7888896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档