2012-10-09 55 views
3

任何人都可以幫助我防止在其按鈕點擊事件解除alertview?預防AlertView解僱

我有一個textview作爲我的alertView的子視圖,我不想解僱它,如果textview的值爲零。

+0

你想要一個不能被解僱的AlertView嗎?我敢肯定,這將違背用戶界面的指導原則:你使用它的目的是什麼? – benwad

+1

嘗試創建您自己的警報視圖:http://iphonedevelopment.blogspot.it/2010/05/custom-alert-views.html –

+0

@benwad yea實際上,我的警報視圖將有兩個按鈕「關閉」和「發送」,用戶如果用戶點擊「發送」而不輸入任何東西在textview中,這是alertview的子視圖... –

回答

3

這可能違反HIG指導原則,不解除UIAlertView。

解決方法:我不知道在您的應用程序在繼續,但要達致這件事,你可以做的是駁回AlertView,然後檢查的TextView的文本設置與否。如果它被設置爲零,那麼再次調出alertview!

+0

是的,我只是現在這樣做...謝謝反正... ...點擊關閉任何時候可以解僱它bt我想要aletview得到dissmissed ... –

+0

我認爲這是一個正確的實施方式。沒有理由保持alertView。即使你想保留它,只要想想「重新展示」它,通過保留一個參考,然後調用[alertView show]。 – samthui7

1

我不確定你可以。

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView 

是迴音的唯一選項。至少還有一個活動按鈕。

如果你真的很需要那具體的問題,請嘗試重新實現自己的UIAlertView中

+0

至少有一個活動按鈕並不一定是真的 - 它可能會違反HIG,但如果您爲取消按鈕提供nil,並且只有一個按鈕,則可以禁用該按鈕,直到文本視圖有一些按鈕文字在裏面。 – rdelmar

4

由於這是很老的問題,但我得到了一個解決方案,但如果發佈的任何其他開發人員需要在不久的將來。

實施.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; 
    } 
} 

或者,有一個更快的方法:

return [inputText length] ? YES : NO; 

做同樣的事情if statement呢。

+0

我不是真的可以添加到舊的問題,除非它明顯增加了答案的其餘部分,並且實際上認爲這樣做+1好的答案,我可以通過引用'UIAlertViewDelegate'文檔提出一個建議。 – Popeye