2013-11-04 27 views
3

我正在使用UIAlertView提示用戶輸入密碼。如果密碼正確,我想讓警報視圖正常消失;如果密碼不正確,我想讓警報視圖保持不變(將文本更改爲「請再試一次」。)。如何更改默認行爲,以便在按下按鈕時視圖不會消失?不要解僱UIAlertView(無子類)

我試過在Is it possible to NOT dismiss a UIAlertView建議的子類方法,但dismissWithClickedButtonIndex沒有在我的子類中被調用。在閱讀文檔後,我看到子類UIAlertView不受支持,所以我想嘗試另一種方法。

如果UIAlertView不可能,那麼從頭開始創建密碼視圖是最佳選擇嗎?謝謝閱讀。

+3

簡單的解決方案,允許第一'UIAlertView'用相同的代表解散並顯示另一個。這應該有效,但是如果沒有'UIAlertView',你可能會有一段時間。 –

回答

3

您可以設計一個類似於alertview的UIView,並可調用其中的函數。移除UIView由您控制。

+0

我在短期內最終使用了Nicholas Smith的解決方案,但這似乎是我獲得密碼框行爲的最佳選擇。謝謝,Shob-Z! – Rogare

1

單擊按鈕時,不可能將警報留在那裏。

如果您正在本地檢查密碼,或者稍後再顯示另一個警報,您可以通過委託方法alertViewShouldEnableFirstOtherButton:禁用「確定」按鈕。第二次提醒可以包含不同的信息,例如, 「密碼不正確」而不是「輸入密碼」。

5

由於這是一個非常古老的問題,但我得到了一個解決方案,儘管如果有其他開發人員需要在不久的將來發布。

實施.h文件中協議方法

爲了我們UIAlertView中以按鈕水龍頭回應,我們將使用 - alertView:clickedButtonAtIndex:協議的方法

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 

} 
//Now below code will check if uitextfield value. 
- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView 
{ 
    NSString *inputText = [[alertView textFieldAtIndex:0] text]; 
    if([inputText length] > 0) 
    { 
     //text field value is greater than zero ,then Done button will appear as blue,or else it will be blurred 
     return YES; 
    } 
    else 
    { 
     return NO; 
    } 
} 
+1

這是迄今爲止最好的答案。 – Gannicus

+0

@ Gannicus謝謝:) –