但是,SMS VIEwController会自动解散自身.这很容易重现.
我该如何解决?
这是我的代码:
import UIKitimport MessageUIimport ContactsUIclass VIEwController: UIVIEwController,MFMessageComposeVIEwControllerDelegate,CNContactPickerDelegate{ let contactPickerVIEwController = CNContactPickerVIEwController() let messageVC = MFMessageComposeVIEwController() overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() contactPickerVIEwController.delegate = self messageVC.messageComposeDelegate = self } func contactPicker(picker: CNContactPickerVIEwController,dIDSelectContact contact: CNContact) { if let phoneNumberValue = contact.phoneNumbers.first?.value as? CNPhoneNumber { if let phoneNumber = phoneNumberValue.valueForKey("digits") as? String { // Configure message VIEwController messageVC.recipIEnts = [phoneNumber] messageVC.body = "Yoyoyo" picker.presentVIEwController(messageVC,animated: true,completion: nil) } } } func messageComposeVIEwController(controller: MFMessageComposeVIEwController,dIDFinishWithResult result: MessageComposeResult) { self.dismissVIEwControllerAnimated(true,completion: nil) } @IBAction func invite(sender: AnyObject) { self.presentVIEwController(self.contactPickerVIEwController,completion: nil) }}解决方法 问题是您要求您的选择器显示消息视图控制器.当调用contactPicker:picker:dIDSelectContact:方法时,系统会自动关闭选择器视图控制器.这意味着视图控制器正在消失,您正在尝试使用该视图控制器来呈现您的下一个视图控制器.
你需要做的是在这种情况下让“VIEwController”呈现消息视图控制器.下面是我更改的代码部分的示例.你会注意到我有一个计时器.这是因为如果您尝试立即呈现messageVC,则不会发生任何事情,因为联系人视图控制器尚未完成解雇.
func contactPicker(picker: CNContactPickerVIEwController,dIDSelectContact contact: CNContact) { if let phoneNumberValue = contact.phoneNumbers.first?.value as? CNPhoneNumber { if let phoneNumber = phoneNumberValue.valueForKey("digits") as? String { // Configure message VIEwController messageVC.recipIEnts = [phoneNumber] messageVC.body = "Yoyoyo" dispatch_async(dispatch_get_main_queue(),{ () -> VoID in self.presentVIEwController(self.messageVC,completion: nil) }) } }}总结
以上是内存溢出为你收集整理的ios – 从联系人发送短信失败全部内容,希望文章能够帮你解决ios – 从联系人发送短信失败所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)