#ios #xamarin.forms
Вопрос:
Я использую этот пользовательский компонент для отображения сообщений на iOS (что-то вроде тостов в Android).
В Android тост всегда отображается сверху, но в iOS, если открыто всплывающее окно, сообщение отображается за макетом:
void ShowAlert(string message, double seconds)
{
Device.BeginInvokeOnMainThread(() => {
alertDelay = NSTimer.CreateScheduledTimer(seconds, (obj) =>
{
dismissMessage();
});
alert = UIAlertController.Create("", message, UIAlertControllerStyle.Alert);
var window = UIApplication.SharedApplication.Delegate.GetWindow();
window.RootViewController.PresentViewController(alert, true, null);
});
}
Как я могу установить ось z представления так, чтобы это была страница -> всплывающее окно ->> сообщение.
Спасибо
Ответ №1:
Попробуйте достичь этого, создав пользовательский «всплывающий» UIView.
Просто определите пользовательский UIView для отображения «Предупреждения», затем тост будет показан сверху.
Класс MyPopupView:
class MyPopupView : UIView
{
public MyPopupView(string message, string buttonText)
{
this.Frame = new CGRect(50, UIScreen.MainScreen.Bounds.Height / 2 - 30, UIScreen.MainScreen.Bounds.Width - 100, 80);
this.Layer.CornerRadius = 8;
this.BackgroundColor = UIColor.FromRGB(230, 230, 230);
UILabel label_Message = new UILabel();
label_Message.Text = message;
label_Message.Frame = new CGRect(20, 10, 200, 20);
UIButton button_OK = new UIButton();
button_OK.SetTitle(buttonText, UIControlState.Normal);
button_OK.SetTitleColor(UIColor.Red, UIControlState.Normal);
button_OK.Frame = new CGRect(this.Bounds.Width / 2 - 30, this.Bounds.Height / 2 10, 60, 20);
button_OK.TouchUpInside = Button_OK_TouchUpInside;
this.AddSubview(label_Message);
this.AddSubview(button_OK);
}
private void Button_OK_TouchUpInside(object sender, EventArgs e)
{
this.RemoveFromSuperview();
}
}
Добавить MyPopupView:
MyPopupView myPopupView = new MyPopupView("A message here!", "I know");
this.View.AddSubview(myPopupView);
ФУ, в своем тесте я использовал Toast.iOS.