2012-07-19 79 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]; 
相关问题