UIAlertView不显示键盘

时间:2011-11-25 10:47:07

标签: iphone objective-c ios

我有UIAlertView,它在加载视图时显示。

 av = [[UIAlertView alloc]initWithTitle:@"New Password" message:@"please enter a new passward" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"done", nil];

av.alertViewStyle = UIAlertViewStyleSecureTextInput;
[av becomeFirstResponder];   


[av show];

然而,键盘没有显示在iPad或模拟器上?

我也试过

我刚试过

[av becomeFirstResponder];

以及

 UITextField *text = [alertView textFieldAtIndex:0];

[text becomeFirstResponder];

我刚尝试了这段代码,它记录了textField是第一个响应者,但仍然没有键盘。

if([[av textFieldAtIndex:0] isFirstResponder] == YES){
    NSLog(@"av is the first responder.");
}

5 个答案:

答案 0 :(得分:3)

向第一响应者发出警报无济于事。您需要在警报视图中将te文本框设置为第一个响应者。

修改

您可能需要致电reloadInputViews(有或没有s,不记得了)。还要仔细检查您是否在任何可能破坏它们的位置更改输入视图。

编辑2:

您可能希望将警报从viewDidLoad移动到viewDidAppear。我已经看到过早更新/呈现UI元素的问题。我认为这是其中一个案例。

答案 1 :(得分:1)

使用

  av = [[UIAlertView alloc]initWithTitle:@"New Password" message:@"please enter a new passward" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"done", nil];
 av.tag=1;
 av.alertViewStyle = UIAlertViewStyleSecureTextInput;

  [av show];

并使用此方法。

 - (void)alertView:(UIAlertView *)alertViews clickedButtonAtIndex:(NSInteger)buttonIndex
 { 
  if (alertViews.tag==1)
 {
    [textfieldname becomeFirstResponder];
  }
}

答案 2 :(得分:1)

这是有效的

 self.alertView = [[UIAlertView alloc]initWithTitle:@"Login" message:@"Please enter you mobile number" delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil];
    self.alertView.alertViewStyle=UIAlertViewStylePlainTextInput;
        [alertView show];

但不是这个

UIAlertView* alertView = [[UIAlertView alloc] init];
[alertView initWithTitle:...]

答案 3 :(得分:0)

 av = [[UIAlertView alloc]initWithTitle:@"New Password" message:@"please enter a new passward" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"done", nil];

UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(12, 45, 260, 25)];

CGAffineTransform Transform = CGAffineTransformMakeTranslation(0, 60);

[tf setBackgroundColor:[UIColor whiteColor]];

[av setTransform:Transform];

[av addSubview:tf];

[av show];

这可以,但您应该可以在IOS 5中使用UIAlertViewStyleSecureTextInput进行此操作吗?

答案 4 :(得分:0)

我有同样的问题,但我的解决方案看起来可能不适用于原创海报...

我有这段代码:

UIAlertView* alert = [[UIAlertView alloc] init];
[alert initWithTitle:...]

运行时,没有键盘出现。

我将其更改为此,现在出现键盘:

UIAlertView* alert = [[UIAlertView alloc] initWithTitle:...];

创建警报后执行init似乎将对象的内部状态保留为“此对象不需要键盘!”