0

我在我的项目中设置了向电话号码发送消息并且工作正常。我点击button,弹出iPhone发送消息页面,如果我发送消息或点击Cancel,它会返回。现在,如果我第二次单击该按钮,则没有任何反应,如果我第三次单击,则应用程序崩溃。控制台中的信息告诉我将 Use afterScreenUpdates:NO 更改为Use afterScreenUpdates:YES. 所以我controller.view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)在我的代码中添加了,但它没有用。这里需要改变什么?

在控制台中:

Cannot snapshot view (<UIKeyboardImpl: 0x101a224f0; frame = (0 0; 320 216); layer = <CALayer: 0x170622880>>) with afterScreenUpdates:NO, because the view is not in a window. Use afterScreenUpdates:YES.

我的代码:

import UIKit
import MessageUI

class ViewController: UIViewController,  MFMessageComposeViewControllerDelegate {

let messageVC = MFMessageComposeViewController()

var phoneNumber = ""

override func viewDidLoad() {   
    super.viewDidLoad()

     messageVC.messageComposeDelegate = self
 }    

@IBAction func sendMessageTapped(_ sender: AnyObject) {

        let recipient = self.phoneNumber  // I get self.phonenumber from other code, no problem.

        messageVC.body = ""
        messageVC.recipients = [recipient]

    self.present(messageVC, animated: true, completion: nil)

}


func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
  // I added this line to fix, didn't work.   
//  controller.view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)


    switch result.rawValue {

    case 0 :

        print("Sending Message cancelled")

        messageVC.dismiss(animated: true, completion: nil)

    case 1:

        print("Message sent")
        messageVC.dismiss(animated: true, completion: nil)

    case 2:

        print("Sending message failed")
        messageVC.dismiss(animated: true, completion: nil)

    default:
        break
    }
  }


 }
4

2 回答 2

1

我得到同样的问题。这对我有用。

func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
    controller.dismiss(animated: true, completion: nil)
    messageVC = MFMessageComposeViewController()
}
于 2016-10-21T08:27:20.903 回答
0

我没有MFMessageComposeViewController亲自使用过,但查看错误我可以猜测它可能不喜欢被多次呈现。您是否尝试过仅在MFMessageComposeViewController即将显示实例时创建实例,而不是在内存中保留对它的引用并重用它?

于 2016-10-19T15:00:43.010 回答