ios – 从联系人发送短信失败

ios – 从联系人发送短信失败,第1张

概述我正在实现一个看似琐碎且非常流行的用例,用户选择一个联系人,并向他们发送一个预先组合的短信. 但是,SMS ViewController会自动解散自身.这很容易重现. 我该如何解决? 这是我的代码: import UIKitimport MessageUIimport ContactsUIclass ViewController: UIViewController, MFMessageCo 我正在实现一个看似琐碎且非常流行的用例,用户选择一个联系人,并向他们发送一个预先组合的短信.

但是,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 – 从联系人发送短信失败所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1048397.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存