ABPeoplePickerNavigationController 随着 iOS8 的变化?

2024-02-11

由于我已将 iPhone 上的 XCode(6.0、6A313)和 iOS(8.0、12A365)更新为 gm 种子,因此 ABPeoplePickerNavigationController 代码无法像以前一样工作。

  • iOS 7.1.2:如果有人想要导入联系人,通讯录将打开,您会看到完整的联系人列表,选择一个联系人后,它会打开联系人的详细视图,然后您可以通过点击手机来添加联系人您要导入的号码。

  • iOS 8.0:一切都很相似,但是如果您单击联系人的号码,它会拨打电话号码而不是导入它。

Code:

#pragma mark - AddressBook Delegate Methods

-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person{
    return YES;
}


-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier{

    // Get the first and the last name. Actually, copy their values using the person object and the appropriate
    // properties into two string variables equivalently.
    // Watch out the ABRecordCopyValue method below. Also, notice that we cast to NSString *.
    NSString *firstName = (__bridge NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);
    NSString *lastName = (__bridge NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty);

    // Compose the full name.
    NSString *fullName = @"";
    // Before adding the first and the last name in the fullName string make sure that these values are filled in.
    if (firstName != nil) {
        fullName = [fullName stringByAppendingString:firstName];
    }
    if (lastName != nil) {
        fullName = [fullName stringByAppendingString:@" "];
        fullName = [fullName stringByAppendingString:lastName];
    }


    // Get the multivalue number property.
    CFTypeRef multivalue = ABRecordCopyValue(person, property);

    // Get the index of the selected number. Remember that the number multi-value property is being returned as an array.
    CFIndex index = ABMultiValueGetIndexForIdentifier(multivalue, identifier);

    // Copy the number value into a string.
    NSString *number = (__bridge NSString *)ABMultiValueCopyValueAtIndex(multivalue, index);

    nameTextField.text = fullName;
    numberTextField.text = number;

    // Dismiss the contacts view controller.
    [_addressBookController dismissViewControllerAnimated:YES completion:nil];

    return NO;
}


// Implement this delegate method to make the Cancel button of the Address Book working.
-(void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker{
    [_addressBookController dismissViewControllerAnimated:YES completion:nil];
}

在苹果的iOS开发者库中找不到任何答案。 还有其他人有解决方案吗?


iOS 8 需要为此实现一个新的委托方法:

- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier {
}

保留旧的委托方法以支持 iOS 7 或更早版本。我在我的应用程序中所做的是从 iOS 8 委托方法调用 iOS 7 委托方法:

- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier {
    [self peoplePickerNavigationController:peoplePicker shouldContinueAfterSelectingPerson:person property:property identifier:identifier];
}

如果 iOS 8 中未实现此委托方法,则点击该值会引发该操作。实现后,将使用所选值来调用委托。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ABPeoplePickerNavigationController 随着 iOS8 的变化? 的相关文章

  • Swift 错误:发出 SIGABRT 信号如何解决

    我只是 Swift 编码的初学者 我的想法很简单 就是一个有两个按钮的应用程序 单击时 文本字段将更改其文本 在 Main StoryBoard 中 我添加一个文本字段和两个按钮 在 ViewController swift 文件中 我这样
  • 如何在没有 MFMessageComposeViewController 的情况下发送和接收短信?

    我想发送和接收短信而不显示MFMessageViewController从我的申请中 有人能告诉我这怎么可能吗 不可能 除非您使用第 3 方 api 发送 接收短信
  • iOS 开发:如何强制 UIWebView 加载 Facebook 的非移动版本?

    我正在深入研究 iOS 开发 当我尝试在 UIWebView 中加载特定的 Facebook 粉丝页面时 它会加载该网站的移动版本 该版本仅加载粉丝页面的墙 而不是我需要加载的特定选项卡 在我的应用程序的 iPad 版本中 UIWebVie
  • GCD 与自定义队列

    我想知道这两者的性能有什么区别 dispatch async dispatch get global queue DISPATCH QUEUE PRIORITY HIGH 0 perform complex operation dispat
  • Xamarin.Forms 实现 AndHud 和 BTProgressHud

    谁能向我指出一个 Xamarin forms 示例 该示例在 Android 上使用 AndHud 在 iOS 上使用 BTProgressHud 或类似的东西 我知道这里有 ACR Xamarin Forms 示例https github
  • Swift UIImage 转换为 PDF

    在我的应用程序中 必须从 iPad Gallery 出售 UIImage 并将其转换为 PDF 并保存在服务器端 我可以选择图像并将其发送到服务器端 但后端说 pdf 为空 空数据 我还在控制台中看到警告 错误 发现扩展时遇到 发现 错误
  • ios - 在日期之间获取(以实际日期,而不是天数)

    我有两个日期字符串 我想获取中间日期 例如 NSString startDate 25 01 2014 NSString endDate 02 02 2014 之间的日期将为 26 01 2014 27 01 2014 28 01 2014
  • 在 Swift 中使用 CIColorMatrix 过滤器

    以下 Swift 函数应该使用指定的 tintColor 对灰度图像 greyImage 进行着色 import UIKit func colorizeImage greyImage UIImage tintColor UIColor gt
  • CIGaussianBlur 有时会改变图像方向

    在我的 iOS 应用程序中 我想在 UIImage 上应用一个滤镜 CIGaussianBlur 当它获得具有大高度的图像时 它会旋转图像 CIContext context CIContext contextWithOptions nil
  • 如何在 ios 应用程序中将 .svg url 显示为图像

    我从服务器获取 svg 网址 如何在我的应用程序中将其显示为图像 我尝试在 UIWebView 中显示它 但无法调整内容图像的大小 我正在使用这个代码 let request NSURLRequest NSURLRequest url UR
  • iOS 9 + Xcode 7 的 Segue 上的应用程序导致整个设备崩溃

    更新 我已经在这一年中使用了我的一个 DTS 目前与 Apple 支持工程师合作 根据他的建议 我还为此创建了一个错误报告 随着时间的推移 我将更新此线程 希望能产生最终的解决方案 不知何故 我找到了一种方法来创建一个可以真正重新启动模拟器
  • 如何找到安全区域的高度和宽度?

    我正在尝试以编程方式为某些标签 按钮和文本字段设置相对于安全区域的高度和宽度的约束 例如 我希望将标签到安全区域顶部的距离设置为安全区域高度的 10 如何检索安全区域的高度和宽度 这是一个合理的方法吗 我的想法是 无论 iOS 设备如何 我
  • 通过 IOS Google Drive SDK 列出 Google Drive 的所有文件夹

    实际上我将 google drive sdk 与我的 ios 应用程序集成了 我可以通过适用于 iOS 的 google drive sdk 在 Google Drive 上上传指定文件 此外 我想提供一个功能 用于从可用文件夹中选择一个文
  • 如何在 iOS 中将 URL 添加到 Safari 的阅读列表?

    在我的 UIWebView 中 我想添加一个选项来将当前页面添加到 Safari 的阅读列表中 我知道这个功能的存在 因为 GMail 在长按链接时提供了它 但我找不到任何有关要使用的 URL 方案的信息 可能重复 如何从 iOS 以编程方
  • 如何设置 AWS Appsync 请求超时限制 || AWSAppSync 客户端不提供回调

    我正在使用 AWS Appsync 来开发当前的应用程序 并面临一个严重的问题 即每当我在 Appsync 客户端中触发查询时 当互联网连接速度较慢时 请求永远不会以回调结束 我在互联网上查了一下 关于这个主题的信息来源有限 而且发现这个问
  • 从本机代码访问 AsyncStorage

    我需要使用 JS 代码中的 AsyncStorage 将数据保存在本地存储中 我想知道是否有一种方法可以从本机代码 Objective C 或 Java 访问 AsyncStorage 存储的数据 Thanks 如果你导入RCTAsyncL
  • iOS Javascript DOM“冻结?”

    这里有几个问题 有没有办法阻止 iOS 在滚动时冻结页面上的 javascript 当您在另一个选项卡中或切换应用程序时 iOS 是否会冻结 JavaScript iOS 上还有其他主要的 javascript 限制吗 iOS 6 x 会暂
  • 应用内购买自定义价格

    我已经搜索了一段时间 但它可能太明显了 人们不会发布它 我想知道是否可以为产品设定动态价格 我有送货申请 价格可能会因距离而异 此外 它也可以是非整数价格 例如 2 43 美元 是否可以 另外 我无法在 iTunes Connect 上设定
  • 从 HealthKit 获取昨天的步数

    我正在构建一个供个人使用的应用程序 目前我正致力于如何从 healthkit 中准确获取昨天的步数 然后从那里将其放入变量中 我知道应该很容易 我有一个 HealthKitManager 类 它从视图内部调用该函数 然后将其附加到同一视图中
  • 立即调用 Swift UIView animateWithDuration 完成闭包

    我期望在指定的持续时间后调用此 UIView 动画的完成闭包 但它似乎立即触发 UIView animateWithDuration Double 0 2 animations self frame CGRectMake 0 self bo

随机推荐

  • 使用动态列名称和动态值的 Dplyr 过滤器

    有人问了同样的问题here https stackoverflow com questions 38563885 dplyr filter using dynamic column name and value并标记为重复项 然而 它不是重
  • `void foo(int a[static 0]);` 有效吗?

    以下函数是否严格符合C99 void foo int a static 0 void a GCC 和 Clang 都会发出有关使用零大小数组的警告 但我认为这个警告是不合理的 据我所知 6 7 6 3p7 https port70 net
  • 识别 C# 列表中的唯一值

    我创建了一个类 如下所示 来表示复合主键模型 public class PrimaryKeyModel public string ColumnName get set public string ColumnValue get set p
  • Vega-lite:轴中标签的换行或自动换行

    我试图将 x 轴的标签包裹在下一行 因为标签长度很长 那么有没有什么办法可以实现呢 我尝试使用calculate and labelExpr通过破坏标签字符串 然后使用 n 连接它们 但这似乎不起作用 是否有任何其他配置可以帮助我实现此用例
  • 如何在Python中加入MongoDB集合?

    如何在 Python 中连接 在 SQL 的 INNER JOIN 意义上 两个 MongoDB 集合 我是否需要使用本机映射 减少 JavaScript 代码或在 PyMongo 中执行此操作 如何用更少的代码解决这个问题 Mongo 存
  • UWP 项目不支持触发器元素 (XAML)

    我正在为 Windows 10 开发通用 Windows 应用程序 我发现的第一件事是在设置图像样式时不支持触发器元素 XAML 这是我试图实现的代码 抱歉 我必须在这里使用图像 我是从我的虚拟机获取它的 这种类型的触发器现在如何在通用 W
  • 访问 Flask 中传入的 POST 数据

    这是烧瓶代码 from flask import Flask request import json app Flask name app route methods GET POST def refresh params thing1 r
  • 如何阻止 iOS 启动图像在 Phonegap / Sencha Touch 中向上移动

    我有一个 Sencha Touch 1 1 Phonegap 1 3 应用程序 并且有一个根据 iOS 文档调整大小的纵向和横向启动图像 当应用程序首次启动时 两个启动图像都正确定位 显示加载旋转器后 启动图像会垂直移动少量 在屏幕底部留下
  • Boost::Asio:为什么 async_write 在通过给定套接字发送缓冲区时会截断缓冲区?

    我目前正在尝试设计一个相当简单的boost asio服务器 我的第一个单元测试相当简单 发送 JSON 请求 COMMAND ADD 1 VALUE 1 并收到以下回复 SUCCESS true VALUE 2 然而 相反 回复在被截断后被
  • 引起原因:java.sql.SQLException:用户“root”@“localhost”访问被拒绝(使用密码:YES)

    当我尝试运行该应用程序时 出现以下错误 见下文 已经尝试过类似主题上发布的解决方案 Exception in thread main org springframework jdbc CannotGetJdbcConnectionExcep
  • 在 R 数据框中创建所有可能的列排列

    我有一个看起来像这样的 df code 1 code 2 code 3 code 4 1 82 93 NA NA 2 15 85 93 NA 3 93 89 NA NA 4 81 NA NA NA 我想生成一个新的 df 它包含所有可能的列
  • 在 Go 中创建迭代器最惯用的方法是什么?

    一种选择是使用渠道 通道在某种程度上就像迭代器 您可以使用 range 关键字迭代它们 但是当你发现你无法在不泄漏 goroutine 的情况下跳出这个循环时 使用就会受到限制 在 Go 中创建迭代器模式的惯用方法是什么 Edit 渠道的根
  • 为什么 Grails 中唯一约束字段更新失败

    当我在域类中映射自定义身份属性时 为什么 hibernate 要检查唯一约束 当我更新对象时 尽管发布的字段值与数据库中存储的值相同 但验证失败 即使我没有对表单进行任何更改 确保 dirty false 并且没有属性绑定错误 也会发生这种
  • SqlDependency 与 SqlCacheDependency

    它们之间的主要区别是什么以及何时应该使用它们 我最初的理解是 SqlCacheDependency 使用轮询 但我读到它对于 ASP NET 2 0 也没有 我想知道哪个最适合在 ASP NET Web 服务器下缓存 linq 查询 这将是
  • 在后台接收推送通知

    我知道很多地方都涉及到这一点 但我无法弄清楚 我使用 Urban Airship 来推送通知 一切似乎都很好 除了当我的应用程序在后台时 didReceiveRemoteNotification没有接到电话 它在前台运行 我能够正确处理消息
  • Echo PHP 变量作为输入字段的值[重复]

    这个问题在这里已经有答案了 我有一个带有多个输入标签的简单 HTML 表单 在页面加载时 我向表单提供数据以回显数据库中字段的当前值 然后用户可以修改这些值并再次提交以执行更新
  • 使用 Lodash 或 Underscore 按多列对对象进行分组

    我有以下对象records notes id 1 description hey userId 2 replyToId null postId 2 parentId null id 5 description hey test userId
  • 线程“main”java.net.ConnectException中出现异常:连接被拒绝:连接[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 如何彻底卸载Visual Studio 2010?

    我一直在寻找一个干净的解决方案来完全并最终从我的计算机中删除 Visual Studio 2010 当您安装 Visual Studio 时 它还会在 添加 删除程序 面板中安装一堆程序 大约 55 个 appwiz cpl 我已经尝试过微
  • ABPeoplePickerNavigationController 随着 iOS8 的变化?

    由于我已将 iPhone 上的 XCode 6 0 6A313 和 iOS 8 0 12A365 更新为 gm 种子 因此 ABPeoplePickerNavigationController 代码无法像以前一样工作 iOS 7 1 2 如