2016-10-19 4 views
0

내 프로젝트의 전화 번호로 메시지를 보내고 올바르게 작동합니다. button을 클릭하면 iPhone 전송 메시지 페이지가 팝업되고, 메시지를 보내거나 Cancel을 클릭하면 되돌아갑니다. 이제 버튼을 두 번째로 클릭하면 아무 것도 나타나지 않습니다. 세 번째로 클릭하면 앱이 다운됩니다. 콘솔의 정보에서 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. 

내 코드 : 나는 개인적으로 MFMessageComposeViewController 사용하지 않은,하지만 오류보고하는 것은 내가 좋아하지 않을 수도 있다는 추측을 할 수

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 
    } 
    } 


} 

답변

0

제시되고있는 콘솔

두 번 이상. MFMessageComposeViewController 인스턴스를 메모리에있는 참조를 유지하고 다시 사용하는 대신 표시하려고 시도한 적이 있습니까?

+0

답변보다 답변이 더 많습니다. 그러나 좋은 * 의견. :) –

+0

그게 내가 사용하는 방법을 조금 보여줍니다;) – dlbuckley

+0

@ dlbuckley 좋은 추측! 버튼을 클릭하면 MFMessageComposeViewController 인스턴스가 생성되었습니다. 이제 제대로 작동합니다! 감사. – developermike

1

동일한 문제가 발생합니다. 그것은 나를위한 일입니다.

func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { 
    controller.dismiss(animated: true, completion: nil) 
    messageVC = MFMessageComposeViewController() 
}