【问题标题】:MKMapView alert customizationMKMapView 警报自定义
【发布时间】:2013-04-10 13:54:31
【问题描述】:

当您第一次使用 MKMapView 启动应用程序时,应用程序会显示警告消息“想要使用您当前的位置”,选项为“不允许”和“确定”。

我需要自定义此消息。我还需要知道用户选择了哪个选项。我怎样才能做到这一点?

更新: 我需要在 iOS 5+ 上实现这个

【问题讨论】:

    标签: iphone ios google-maps ios5 uialertview


    【解决方案1】:

    CLLocationManager 设置用途属性

    来自这个问题:Replacement for "purpose" property of CLLocationManager

    安娜卡列尼娜的回答

    在 iOS 6 中替代 purpose 属性是一个新的 Info.plist 名为 NSLocationUsageDescription 的键(又名“隐私 - 位置使用 说明”)。

    密钥记录在信息属性列表密钥参考中 但不幸的是,它没有在弃用说明中提到 目的属性。

    但是,CLLocationManager.h 确实有这样的注释:

    • 已弃用。使用键 NSLocationUsageDescription 在 Info.plist 中设置目的字符串。

    在您的代码中,您可以同时设置 key 和 purpose 属性(但 您可能想检查位置管理器是否对此做出响应 如果/当该方法在未来被实际删除时,选择器优先)。

    如果在 iOS 6 下运行,位置管理器将使用密钥。什么时候 在低于 iOS 6 下运行,key 将被忽略和目的 将使用属性。

    【讨论】:

    • 目的在 iOS 6 中已弃用
    • MKMapView 没有 CLLocationManager,那我该如何设置purpose 属性呢?也可以使用 NSLocationUsageDescription 进行欺骗,但它不会自定义消息,它只是在默认警报消息下方添加额外的文本
    【解决方案2】:

    自定义消息

    对于消息,您可以使用 Alex Terente 所说的 purpose 属性,但它在 iOS 6 中已被弃用

    获取选项

    用于了解用户是否拒绝了位置管理器提供的失败委托的权限。 mapview 使用自己的位置管理器,因此:使用 MKMapView 函数 didFailToLocateUserWithError

    - (void)mapView:(MKMapView *)mapView didFailToLocateUserWithError:(NSError *)error {
    switch([error code]) {
                    case kCLErrorDenied:{
                        //user denied
                    }
                    break;
                }
    }
    

    注意:如果您直接使用 CLLocationManager,它将是 - (void)locationManager: (CLLocationManager *)manager didFailWithError: (NSError *)error;

    【讨论】:

    • 不认为这行得通!?地图视图没有自己的 locationManager 吗?
    • 你是对的,如果他只使用 MKMapView 但不使用 CLLocation 管理器,我的答案将不起作用,我已经更新了答案,这应该可以。
    • 是的,我已经重写了它,但首先显示 mapview 错误,因为这样答案更好地匹配问题
    【解决方案3】:

    如果您正在为 iOS 6+ 构建,请在您的 Info.plist 文件中使用 NSLocationUsageDescription。插入此键并将其值设置为您将如何处理位置信息的描述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      • 2016-12-09
      相关资源
      最近更新 更多