2016-10-19 1 views
0

Ich richte Nachricht an Telefonnummern in meinem Projekt und funktioniert gut. Ich klicke auf die button, iPhone sendende Nachricht Seite erscheint, wenn ich eine Nachricht sende oder klicke Cancel, es geht zurück. Wenn ich jetzt zum zweiten Mal auf die Schaltfläche klicke, passiert nichts, wenn ich zum dritten Mal klicke, stürzt die App ab. Die Info in der Konsole sagte mir, dass ich nach dem ScreenUpdates ändern sollte: NEIN zu Use afterScreenUpdates:YES. Also habe ich in meinem Code controller.view.drawHierarchy(in: view.bounds, afterScreenUpdates: true) hinzugefügt, aber es hat nicht funktioniert. Was muss sich hier ändern?Wieso kommt es beim dritten Klick zu einer Fehlermeldung?

in der Konsole:

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. 

Mein Code:

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


} 

Antwort

0

ich nicht die MFMessageComposeViewController persönlich in Anspruch genommen haben, aber den Fehler suchen kann ich eine Vermutung, dass es nicht ist, präsentiert vielleicht gefallen mehr als einmal. Haben Sie versucht, nur die MFMessageComposeViewController -Instanz zu erstellen, wenn Sie sie gerade zeigen, anstatt sie im Speicher zu behalten und wiederzuverwenden?

+0

Scheint mehr ein Kommentar als eine Antwort. Aber ein * guter * Kommentar. :) –

+0

Das zeigt nur, wie wenig ich SO verwende;) – dlbuckley

+0

@dlbuckley Gut geraten! Ich habe die MFMessageComposeViewController-Instanz erstellt, als ich auf die Schaltfläche geklickt habe. Jetzt funktioniert es gut! Vielen Dank. – developermike

1

Ich bekomme dasselbe Problem. Es ist Arbeit für mich.

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