2012-07-19 45 views
0

當用戶打開我的應用程序時,我想檢查存儲在默認值中的值,如果不存在,則提示用戶輸入值。存儲/讀取值似乎正在工作。除非重新打開應用程序,否則UIAlertView鍵盤不會顯示

-(void) viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    NSLog(@"Checking if there is an email address set"); 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString * emailAddress = [defaults objectForKey:@"emailAddress"]; 
    if (IsEmpty(emailAddress)) 
    { 
     NSLog(@"email address is blank, prompting user to enter one.."); 
     self.emailPromptAlert = [[UIAlertView alloc] initWithTitle:@"Alert" 
                  message:@"Enter Email address:" 
                 delegate:self 
               cancelButtonTitle:@"Cancel" 
               otherButtonTitles:@"OK", nil]; 
     [self.emailPromptAlert setAlertViewStyle:UIAlertViewStylePlainTextInput]; 
     [self.emailPromptAlert setTag:1]; 
     [self.emailPromptAlert show]; 
    } 
} 

是我的問題是,當我做一個乾淨的安裝我的應用程序和負載首次的,警報顯示爲預期,但沒有顯示鍵盤,使用戶可以不實際輸入任何內容

單擊主頁按鈕,然後再次將應用程序帶回前臺,同樣的警報顯示在屏幕上,但這次鍵盤實際上正在顯示。

我該怎麼做才能確保第一次顯示鍵盤?

+0

您可以讓textfield成爲第一響應者嗎? – Ryan 2012-07-19 15:02:20

+0

@ l3v我試過了,我認爲這可能是'viewWillAppear'上的一個問題' – Jimmy 2012-07-19 15:16:30

+1

可能是,我剛剛嘗試了'viewWillAppear'中的警報視圖,並且第一次彈出了鍵盤。 – Ryan 2012-07-19 15:22:49

回答

0

我不完全確定,但也許這可以工作?

self.emailPromptAlert = [[UIAlertView alloc] initWithTitle:@"Alert" 
                 message:@"Enter Email address:" 
                delegate:self 
              cancelButtonTitle:@"Cancel" 
              otherButtonTitles:@"OK", nil]; 
[self.emailPromptAlert setAlertViewStyle:UIAlertViewStylePlainTextInput]; 
[self.emailPromptAlert setTag:1]; 

[self.emailPromptAlert show]; 

//try this? 
UITextField *textField = [self.emailPromptAlert textFieldAtIndex:0]; 
[textField becomeFirstResponder]; 

這並沒有真正解決它爲什麼沒有在第一位顯示的問題的根源,但它可能是一個解決方案。

3

這是一個怪異的行爲,你爲什麼不嘗試顯示,在未來runloop

[self.emailPromptAlert performSelector:@selector(show) withObject:nil afterDelay:0]; 
1

我有同樣的問題的警報。就我而言,當我顯示警報時,鍵盤已經可見。我通過在顯示警報之前通過關閉鍵盤來解決它:

[myTextField resignFirstResponder]; 
[myAlert show]; 
相關問題