我正在使用Xamarin.Forms開發移動應用程序。我有要求在對話框中獲得輸入。所以,我已經使用UIAlertView來獲取文本輸入,如下所示。防止在PositiveButton上關閉UIAlertView點擊
我需要防止從UIAlertView中收盤按鈕的點擊。即使在啓動操作之後,我仍需要保留UIAlertView對話框。
任何人都可以幫助我嗎?
問候,
卡菲基恩
我正在使用Xamarin.Forms開發移動應用程序。我有要求在對話框中獲得輸入。所以,我已經使用UIAlertView來獲取文本輸入,如下所示。防止在PositiveButton上關閉UIAlertView點擊
我需要防止從UIAlertView中收盤按鈕的點擊。即使在啓動操作之後,我仍需要保留UIAlertView對話框。
任何人都可以幫助我嗎?
問候,
卡菲基恩
您可以創建此使用XIB文件,但是如果你不反對的對話框關閉並重新打開它應該遇到驗證問題,那麼下面將一個自定義的UIView工作正常。
編輯:調整爲允許您傳回驗證消息,作爲UIAlertView上的主要消息。
private string message = string.Empty();
public void recursiveDialog()
{
string input = string.Empty();
if(message == string.Empty()) { message = "Please enter the view name"}
var alert = UIAlertController.Create ("Save View", message, UIAlertControllerStyle.Alert);
alert.AddTextField ((field) => {
field.Placeholder = "view name";});
alert.AddAction (UIAlertAction.Create ("Cancel", UIAlertActionStyle.Cancel, null));
alert.AddAction (UIAlertAction.Create ("Save", UIAlertActionStyle.Default, action => {
input = alert.TextFields[0].Text
}));
if (alert.PopoverPresentationController != null)
alert.PopoverPresentationController.BarButtonItem = myItem;
PresentViewController (alert, animated: true,
action => {
// when a dialog is selected and returns, run validation
if(input == [whatever you want to use to validate it against])
{
// it failed because it already exists for example so change our message
message = "That view name already exists, try again.";
// already exists, so re-run method.
recursiveDialog();
}
else
{
// doesn't alread exist so carry on with whatever you want to do with the name provided.
// clear your message variable
message = string.Empty();
}
});
}
謝謝!我會試試這個。還有一點疑問,你有沒有想法如何在Alert框中顯示驗證消息(帶有TextField)? – Karthik
@Karthik我已經對上面的代碼進行了更改,它應該允許您通知用戶爲什麼對話框重新出現。 – Digitalsa1nt
感謝您的建議!但我需要在TextField下面顯示消息。 再次感謝您的回覆。 – Karthik
對不起,你能告訴我們你的推理嗎?在他們提供第一個問題的答案之後,你是否需要他們輸入更多信息? – Digitalsa1nt
我需要在點擊保存按鈕後驗證用戶輸入。這裏驗證意味着 *驗證特殊字符。 *驗證名稱是該名稱已經存在。 – Karthik
那麼如果驗證失敗,重新顯示彈出窗口會出現什麼問題? – Digitalsa1nt