-1

在花了一整天(>12 小时)试图在 13 行令人难以置信的通用代码中找出一个 bug 之后,我得出了一个可疑的结论,即CNContactPickerViewController在 iOS 9.2 的当前迭代中一定存在一个 bug。

只需复制+粘贴ViewController并将操作链接invite到按钮。

错误是MFMessageComposeViewController立即关闭自己。

如果有人知道该怎么做,请分享?

import UIKit
import MessageUI
import ContactsUI

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate, CNContactPickerDelegate {

    let contactPickerVC = CNContactPickerViewController()
    let messageVC = MFMessageComposeViewController()

    override func viewDidLoad() {
        super.viewDidLoad()
        contactPickerVC.delegate = 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.messageComposeDelegate = self
                messageVC.recipients = [phoneNumber]
                messageVC.body = "Yoyoyo"
                picker.presentViewController(messageVC, animated: true, completion: nil)

            }
        }
    }

    func messageComposeViewController(controller: MFMessageComposeViewController, didFinishWithResult result: MessageComposeResult) {
       controller.dismissViewControllerAnimated(true, completion: nil)
    }

    @IBAction func invite(sender: AnyObject) {
        presentViewController(contactPickerVC, animated: true, completion: nil)
    }
}
4

1 回答 1

0

我通过关闭pickerVC并更改呈现messageVC的控制器来让它工作!

插入(在 messageVC 配置行之前):

 picker.dismissViewControllerAnimated(true, completion: nil)

代替

picker.presentViewController(messageVC, animated: true, completion: nil)

  presentViewController(messageVC, animated: true, completion: nil)
于 2016-01-14T00:03:12.330 回答