Там какой-либо путь использует Формы Xamarin (не Android или конкретная iOS), чтобы иметь всплывающее окно, как Android делает с Тостом, который не нуждается ни в каком взаимодействии с пользователем и уходит после (короткого) промежутка времени?
От поиска вокруг всего я вижу, предупреждения, которым нужны пользовательские щелчки, чтобы уйти.
Можно использовать DisplayAlert("", "", "", "" );
Проверьте plugin.toast v 2.1.2 доступных для андроида, iOS и UWP
Для UWP
public void ShowMessageFast(string message)
{
ToastNotifier ToastNotifier = ToastNotificationManager.CreateToastNotifier();
Windows.Data.Xml.Dom.XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02);
Windows.Data.Xml.Dom.XmlNodeList toastNodeList = toastXml.GetElementsByTagName("text");
toastNodeList.Item(0).AppendChild(toastXml.CreateTextNode("Test"));
toastNodeList.Item(1).AppendChild(toastXml.CreateTextNode(message));
Windows.Data.Xml.Dom.IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
Windows.Data.Xml.Dom.XmlElement audio = toastXml.CreateElement("audio");
audio.SetAttribute("src", "ms-winsoundevent:Notification.SMS");
ToastNotification toast = new ToastNotification(toastXml);
toast.ExpirationTime = DateTime.Now.AddSeconds(4);
ToastNotifier.Show(toast);
}
IOS отвечает выше обработанного за меня, но за одну небольшую проблему - предупреждение: Попытайтесь представить UIAlertController..., представление которого не находится в иерархии окна!
После некоторого поиска, я столкнулся с этим несвязанный ответ , который помог. Плакат прокомментировал, что "Это выглядит глупым, но работает", который является правильным на обоих количествах.
Так, я изменил ShowAlert () функция выше с этими строками, которые, кажется, работают:
var rootVC = UIApplication.SharedApplication.KeyWindow.RootViewController;
while ( rootVC.PresentedViewController != null) {
rootVC = rootVC.PresentedViewController;
}
rootVC.PresentViewController( alert, true, null);
Это - мой улучшенный ShowAlert
версия версии Ian Warburton, чтобы гарантировать, что тост отображен даже на раскрывающейся странице. Кроме того, тост отклонен если пользовательский щелчок вне тоста. Я использовал UIAlertControllerStyle.ActionSheet
, что взгляду нравится тост, но он также работает с UIAlertControllerStyle.Alert
void ShowAlert(string message, double seconds)
{
var alert = UIAlertController.Create(null, message, UIAlertControllerStyle.ActionSheet);
var alertDelay = NSTimer.CreateScheduledTimer(seconds, obj =>
{
DismissMessage(alert, obj);
});
var viewController = UIApplication.SharedApplication.KeyWindow.RootViewController;
while (viewController.PresentedViewController != null)
{
viewController = viewController.PresentedViewController;
}
viewController.PresentViewController(alert, true, () =>
{
UITapGestureRecognizer tapGesture = new UITapGestureRecognizer(_ => DismissMessage(alert, null));
alert.View.Superview?.Subviews[0].AddGestureRecognizer(tapGesture);
});
}
, я надеюсь, что это поможет кому-то!
Можно использовать IUserDialog NuGet и просто использовать, это - toastAlert
var toastConfig = new ToastConfig("Toasting...");
toastConfig.SetDuration(3000);
toastConfig.SetBackgroundColor(System.Drawing.Color.FromArgb(12, 131, 193));
UserDialogs.Instance.Toast(toastConfig);
Можно использовать Acr. Пакет UserDialogs от самородка и кода как ниже,
Acr.UserDialogs.UserDialogs.Instance.Toast(Message, new TimeSpan(3));