내 프로젝트의 전화 번호로 메시지를 보내고 올바르게 작동합니다. 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
}
}
}
답변보다 답변이 더 많습니다. 그러나 좋은 * 의견. :) –
그게 내가 사용하는 방법을 조금 보여줍니다;) – dlbuckley
@ dlbuckley 좋은 추측! 버튼을 클릭하면 MFMessageComposeViewController 인스턴스가 생성되었습니다. 이제 제대로 작동합니다! 감사. – developermike