-1

CNContactPickerViewController13 行の気が遠くなるような一般的なコードのバグを特定するために 1 日 (>12 時間) 費やした後、iOS 9.2の現在のイテレーションにバグがあるに違いないという疑わしい結論に達しました。

これをコピーして貼り付け、アクションをボタンに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 に答える