gpt4 book ai didi

ios - 单点触控 : consecutive views

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

我目前正在尝试在用户发送消息或取消后,在短信(MFMessageComposeViewController)之后显示电子邮件 View (MFMailComposeViewController)..

MFMessageComposeViewController 已正确关闭,但 MFMailComposeViewController 未显示。

我在线程 InvokeInMainThread 上搜索,但它没有显示或不在主线程中。老实说,我根本不知道线程,而且我阅读的文档也不清楚。

显示MFMessageComposeViewController的方法:

private void SendSms ()
{
string strMessage = MessageComposer.GetMessage(isEmergency, latitude, longitude, location);
MFMessageComposeViewController message = Sender.SendSms(strMessage, AppDelegate.contacts);
message.Finished += delegate {
message.DismissModalViewControllerAnimated(true);
};
this.NavigationController.PresentModalViewController (message, true);
}

MFMailComposeViewController 并没有太大的不同。我以这种方式调用此方法:InvokeOnMainThread(delegate { SendSms(); }); 并完美运行。

我的坏处是关闭的时间。我尝试了 ThreadPool.QueueUserWorkItem(new WaitCallback(new Object(), SendEmail)); 但它不在主线程中。

我试过那个:

SendDelegate d = new SendDelegate(SendSms);
AsyncCallback callBack = new AsyncCallback(SendEmail);
IAsyncResult ar = d.BeginInvoke(new Object(), callBack, null);

不在主线程中。

编辑:解决方案代码

这是解决方法!我应该考虑一下......

MFMessageComposeViewController message = new MFMessageComposeViewController();
message.Finished += delegate {
message.DismissModalViewControllerAnimated(true);
ThreadPool.QueueUserWorkItem ((e) => {
Thread.Sleep(500);
InvokeOnMainThread (delegate {
SendEmail();
});
});
};
this.NavigationController.PresentModalViewController (message, true);
}

最佳答案

您不能在对 DismissModalViewController 的另一个调用正在进行时对 PresentModalViewController 进行第二次调用。 (如果您尝试这样做,可能会向控制台显示一个错误。)

所以你的选择是:

  • 使用计时器显示第二个模态视图 Controller
  • 对您的 UI 使用更有意义的不同方法

我会推荐第二个选项。可能对这两个操作使用两个不同的按钮或菜单选项。

关于ios - 单点触控 : consecutive views,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12178436/

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