gpt4 book ai didi

ios - 我不能在 Swift 中调用多个应用程序消息

转载 作者:行者123 更新时间:2023-11-28 12:42:09 25 4
gpt4 key购买 nike

我需要发送多条短信,多次提出申请信息。但控制台显示此错误:

2016-08-27 19:27:17.237 AlertaTel 2.0[841:263754] Attempt to present <MFMessageComposeViewController: 0x15e19ba00> on <AlertaTel_2_0.ViewController: 0x15de43af0> which is waiting for a delayed presention of <MFMessageComposeViewController: 0x15e24ca00> to complete

我在这个网站上读到过这个问题,但只在 Objective-c 中找到了解决方案或主题,老实说我什至没有掌握这门语言(我更倾向于 Swfit)。

我附上了我的代码:

类 MessageComposer

class MessageComposer: NSObject, MFMessageComposeViewControllerDelegate {

// A wrapper function to indicate whether or not a text message can be sent from the user's device
func canSendText() -> Bool {
return MFMessageComposeViewController.canSendText()
}

// Configures and returns a MFMessageComposeViewController instance
func configuredMessageComposeViewController(unicaVariable : String) -> MFMessageComposeViewController {
let messageComposeVC = MFMessageComposeViewController()
messageComposeVC.messageComposeDelegate = self // Make sure to set this property to self, so that the controller can be dismissed!
messageComposeVC.recipients = textMessageRecipients
messageComposeVC.body = "Estoy en peligro, aca esta mi última ubicación: https://maps.google.com/maps?q="+(view.locationManager.location?.coordinate.latitude.description)!+","+(view.locationManager.location?.coordinate.longitude.description)!+". "+(unicaVariable)
//view.performRequestAndUpdateUI()
return messageComposeVC

}

// MFMessageComposeViewControllerDelegate callback - dismisses the view controller when the user is finished with it
func messageComposeViewController(controller: MFMessageComposeViewController, didFinishWithResult result: MessageComposeResult) {
controller.dismissViewControllerAnimated(true, completion: nil)
}

在 View Controller 中:

 func levantarMensaje(datoWebService: String){
if (messageComposer.canSendText()) {
let messageComposeVC = messageComposer.configuredMessageComposeViewController(datoWebService)
presentViewController(messageComposeVC, animated: true, completion: nil)

} else {
// Let the user know if his/her device isn't able to send text messages

}
}

我在@IBAction 中调用这个方法:

  @IBAction func sendTextMessageButtonTapped(sender: UIButton) {
levantarMensaje()
}

当我在 IBAction 上实现一个简单的“FOR”时,出现上面显示的错误。

非常感谢您的回答,问候!

最佳答案

此处发生的情况是,您正在尝试开始模态演示,而之前的模态演示仍在动画中。 UIKit 不喜欢那样;您需要等到一个演示结束后再开始下一个演示。有几种方法可以做到这一点。

第一个是同时进行多个模式演示,但要确保动画不会同时发生。您可以通过将对 presentViewController(_:, animated:, completion:) 的调用更改为使用 completion 参数来呈现下一个消息 View Controller 来实现此目的。这样第一个消息 View 就会出现,当它完成动画时下一个就会开始,等等。

另一种方法是等到一条消息发送(或取消)后再显示下一条消息。为此,您需要将 controller.dismissViewControllerAnimated(true, completion: nil) 替换为类似于我上面描述的内容。不是为 completion 参数传递 nil,而是传递一个呈现下一个消息 View 的闭包,直到没有剩余为止。

关于ios - 我不能在 Swift 中调用多个应用程序消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39186594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com